Dad72 Posted November 8, 2015 Share Posted November 8, 2015 Hello, When one does not inform the property range to all light and that it serializes the scene. you get a number => 1.7976931348623157e+308.If I information this value "light.range = 1.8" for example, it works well, the serialized value is correct but not the default value. see line 1 in the console of playground : {"autoClear":true,"clearColor":[0.2,0.2,0.3],"ambientColor":[0,0,0],"gravity":[0,-9.807,0],"lights":[{"name":"light1","id":"light1","tags":null,"type":3,"direction":[0,1,0],"groundColor":[0,0,0],"intensity":0.7,"range":1.7976931348623157e+308,"diffuse": http://www.babylonjs-playground.com/#2EAMX1#3 Je pense que le fix serait: this.range = parseFloat(Number.MAX_VALUE); Ou directement mettre une valeur par défaut qui semble être 1.8 à chaque fois quand on arrondit tout sur 1.797... this.range = 1.8; Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 Hi Dave, 1.797...e+308 is the text value of Number.MAX_VALUE (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE) and this is already done see here : https://github.com/BabylonJS/Babylon.js/blob/master/src/Lights/babylon.light.ts#L26 Quote Link to comment Share on other sites More sharing options...
RaananW Posted November 8, 2015 Share Posted November 8, 2015 1.7976931348623157e+308 is Number.MAX_VALUE and is a very (very very) large number. it is not 1.8 . Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 No you do not understand.The bug is in the return value when the serializer light. e+ is the bug in one value number float1.7976931348623157e+308 I understand Number.MAX_VALUE, but parseFloat(Number.MAX_VALUE); This would avoid e+ in a float. If you recharge the scene serialize this (e+) provoke an error @Temechon: ce que je veux dire, c'est que ce e+ dans cette valeur par défaut n'est pas correct quand tu recharge la scene sérialiser. donc si on ajoute un parseFloat() a Number.MAX_VALUE (qui existe oui je le sait) ce signe e+ n’apparaît plus et corrige le probleme de sérialisation de scene. le probleme est quand on recharge la scene..Essaye de recharger ma demo du playground sérialiser, tu verras que cela provoque une erreur de formation json a cause de ce signe e+ dans le nombre float. (une valeur float est attendu et "e+" est un string) ce e+ dans le nombre flottant renvoie une erreur. Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 I tried to load your serialized scene: no problem for me... The code is too long and won't let me save it, but it works! i did this: var createScene = function () { var scene = new BABYLON.Scene(engine); BABYLON.SceneLoader.Append( "", 'data:json_string_here', scene, function() { console.log("finish") } ); return scene;}; Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Works like that, yes. but if you save this scene in a file .babylon and reload this scene (not with data: string) that does not work because it is a float value is expected. you find that e+ is a float? Quote Link to comment Share on other sites More sharing options...
JCPalmer Posted November 8, 2015 Share Posted November 8, 2015 I think I understand. The serializeLight() in SceneSerializer.ts does actively store .range in line 35. https://github.com/BabylonJS/Babylon.js/blob/master/src/Tools/babylon.sceneSerializer.ts#L35 if you do not specify a range, then the default ends up getting serialized. The default IS MAX_VALUE. The problem of not being able to reload MAX_VALUE expressed as an actual number could be fixed by only serializing range when it is not equal to MAX_VALUE. That way nothing is put in the .babylon. When reloaded, it will get the default the normal way. Dad72 1 Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 look here vector3 . the sphere disappeared. Comment now sets the position of the sphere. and it appears. La preuve formelle: http://www.babylonjs-playground.com/#K46GN#3 Edite: Thanks JC I'm not crazy RaananW 1 Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 It's not an error Dave : http://www.babylonjs-playground.com/#K46GN#4 JC, I understood the problem, but for me it works fine. Append function uses the same inner function as SceneLoader.Load (proof), so everything works fine for me. Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Temechon. the bug is here: sphere.position.y = 1.19782E+1; I'll put in bold red the problem. I think you do not look at the problem where it is. you to correct the problem adds a result : camera.position.y = sphere.position.y; but sphere.position.y returns a good value, but 1.19782E+1 is not a good value, is not "int", not "float". but if I was recovering after you fix: sphere.position.y = 1.19782E+1; we have the problem again. this is not a number : 1.19782E+1; but becomes a 'string' So no it does not work if you add this number "1.19782E+1" containing a letter in a number. I do not know how you can make this kind of numbers. (one + 1) does not return 2 If you calculate this with a calculator: : 1.5 + 1.3e+1 = ??? (error) You happen to have a result here ? E+ is a number? for me, no, the problem jumps eyes though. Check here on a vector3 and this number with E+http://www.babylonjs-playground.com/#K46GN#5 Je crois que j'allucine, tu te moque de moi temechon, tu me fait une blague, hein c’est ca ? ca ne te saute pas au yeux cette valeur avec ce e+ en plein milieux d'un nombres qui n’est pas un nombre au final et ne peut pas être calculer avec un autre nombre ? Babylon attend un nombre int ou float, mais avec ce E+, ce n’est ni l'un, ni l'autres. Quote Link to comment Share on other sites More sharing options...
jerome Posted November 8, 2015 Share Posted November 8, 2015 console.log(1.2E+1, typeof (1.2E+1));it's a number Your sphere is just far higher than your cam.Just steer your cam to the sphere position : http://www.babylonjs-playground.com/#K46GN#6 or move your camera back and you'll see the sphere : http://www.babylonjs-playground.com/#K46GN#7 Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Le probleme n'est pas la jerome. vous ne comprenez pas je pense . toi tu formate ce nombre dans un console.log. mais quand tu sérialise ta scene tu fait un console log aussi pour formater toutes les valeurs de la scene sérialiser... Vous avez essayer concrètement, je ne pense pas sinon vous verriez l'erreur aussi. Quand tu sérialise une scene avec des lumières, la propriété range a une valeur avec ce e+. cette scene sérialiser enregistrer dans un .babylon, si tu la recharge, ne ce charge pas et dans la console c'est a cause de ce e+ dans un nombre. je ne vous demande pas des formules pour me prouver que ce nombre peut être formater. je dit que quand tu charge un .babylon avec une chaîne dans un nombre ca ne fonctionne pas, le bug est ici. Donc il y a bien un probleme. C 'est pas français ce que je dit là ? 'il y en a bien un bug quand la scene est sérialiser et enregistrer dans un .babylon, puis recharger ensuite. je ne pense pas que vous avez tester. même avec une démo concrète qui montre le bug, vous dites encore que cela n'en est pas un. Mais comment vous faites pour pas comprendre, je m'exprime mal ou vous lisez en diagonal ? quand je sérialise la scene, il y a un bug, ce e+ dans un nombre n’est pas bon. ne cherche pas plus loing que ca ou ailleur. moi je parle juste d'ajouter un parseFloat par exemple pour que ce probleme soit régler quand la scene est sérialiser affin d’éviter d'avoir ce morceau de chaîne dans un nombres. Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Je vient de voir que tu a éditer Jerome. non, ce n’est pas bon. essaye avec ta méthode:sphere.position.y = 1.19782E+1; maintenant compare avec:sphere.position.y = 1.197821; Regarde la difference de hauteur quand on part de 0 unity en Y La position de la sphère est a 1 unité virgule 2 en gros. mais avec ce E+ est elle est a 11 unité. Donc cette valeur n’est pas cohérente. De plus quand je charge une scene .babylon avec une valeur de ce genre, j'ai des erreurs et quand je les parse, plus d'erreur. en gros ce qui ce passe: 1.19782E+1 == 11 . la valeur n’est plus que considérer comme un float, mais un int et additionne 1 comme une chaîne après le E et rend la variable une chaîne et donne un int 11 au final. La preuve avec ta démo jerome. SI vous voyez de la cohérence, je ne comprend vraiment pas. en plus cours: ca donne (string)"1" + (int)1 = (string)"11". Ce E dans un nombre transforme la variable en string et additionne le string 1 additionner après un int 1 après un + et donne une chaine de caractaire "11" et est traiter par babylon comme un nombre 11. voila pourquoi je doit monter ma camera a 11 unité ors que la sphère devrais être a 1.2 unité environs. Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 Re David, en JS, quand tu écris un nombre avec E, cela veut dire que tu multiplie par 10 le nombre. 1E+1 = 10, 1E+2 = 100 etcOuvre la console debug de ton browser, et tape 1.197E+1: cela fait 11.97. C'est donc un nombre.Le fait de parser 1.197E+1 va te renvoyer 1.197, ce qui est inexact, vu qu'il s'agit en fait de 11.97 As-tu un fichier babylon qui pose le problème que tu décris ? Si oui, peux-tu faire un exemple en le chargeant dans le playground ? Je ne pense pas que cela soit la cause du problème que tu décris ici : Quand tu sérialise une scene avec des lumières, la propriété range a une valeur avec ce e+. cette scene sérialiser enregistrer dans un .babylon, si tu la recharge, ne ce charge pas et dans la console c'est a cause de ce e+ dans un nombre Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Alors si c’est ca, ok, je ne savais pas que cela faisais office de multiplicateur, mais quand je met un signe plus après une valeur string, j'ai un resultat string. "1"+1 vas donner un "11". Moi ce que je voie c’est que quand je sérialise une scene et que je ne modifie pas la valeur range et que je recharge ma scene enregistrer dans un .babylon, j'ai un bug. mais si je met light.range = 1.8 par exemple, ma scene ce recharge correctement. donc je ne l'invente pas le bug. Il est peut être ailleurs, mais il y en a un. Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 Ok, back in English Is it possible for you to load your buggy file in a playground? Maybe the bug is hidden elsewhere. Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 No I can not load my file from the playground, the URL is not accepted. but I will reproduce it and send a link to my sene in place. Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 Can you send me your babylon file? Maybe i can host it if you need. Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Ok, I understood why I was wrong. is that when I save a file after the + E disappears and replaces it with a space which gives this error when I load the scene. So it's my fault and I thought it was the E + sign because not knowing that this serves as a multiplier. I would have learned something more. Maybe if you had me explain this from the beginning, we would not have discussed all this time. You're there put a lot without ever explain this sign. Thanks for help. So the bug was home. but I find this really strange multiplier value. Temechon 1 Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 My probleme is $.ajax. he remove the + character after sent. Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Fix with encodeURIComponent() Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 Et excuser moi de pas avoir compris. j'ai fait trop d’école buissonnière et disons que j'ai pas été loin dans les études j'ai arrêter en 5 iem, donc j’ai pas vue ces chose là en mathématique. And excuse me for not having understood. I did too school truancy and say that I have not been away in the studies I stop 5 em year, so I have not seen such thing in mathematics there. Quote Link to comment Share on other sites More sharing options...
Temechon Posted November 8, 2015 Share Posted November 8, 2015 Don't worry, we are here to help! You helped a lot of people here, so it's now our turn to give back the favor. It's called scientific notation for information. Congrats on finding this sneaky bug Dad72 1 Quote Link to comment Share on other sites More sharing options...
Dad72 Posted November 8, 2015 Author Share Posted November 8, 2015 sneaky bug, yes My girlfriend me explain what E+ which are powers.Now I understand what it is E+ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.