Jump to content

BABYLON.GUI not work on my project


Dad72
 Share

Recommended Posts

When I use this line, my scene did not display and the GUI either.

BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh() 

If I use that line, my scene display but not the GUI.

BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI()

This happens only when using the line (AdvancedDynamicTexture). I do not know what I can do of bad. I added BABYLON.GUI in a function which is loaded when I load my terrain. I do nothing special.

I'll post a PG if I find the origin of the problem.

 

Link to comment
Share on other sites

I try to reproduce it from a export the playground in a zip, but I noticed in the zip, the AdvancedDynamicTexture unavailable. In made there is no extension in the zip.

Otherwise, I think the problem is because I uses several canvas and engine on my project. I tried several solutions and I found that the problem with several canvas.

I can not reproduce it on the playground that has a single canvas.

 

 

Link to comment
Share on other sites

How to create a repro? The playgroung not several canvas with several engine. It is impossible for me to reproduce or test if it is indeed that.

I can create a separate page if necessary and try to reproduce the bug and send the link to you.

But I am sure that there is a bug somewhere, because when I use the same function in a dynamic texture, it works.

Works:

let dynamicTextureEtiquetePortail = new BABYLON.DynamicTexture("DTEP", 512, global.scene, true);
dynamicTextureEtiquetePortail.hasAlpha = true;
let textureContext = dynamicTextureEtiquetePortail.getContext();
let size = dynamicTextureEtiquetePortail.getSize();
textureContext.clearRect(0, 0, size.width, size.height);
textureContext.font = "bold 230px Calibri";
textureContext.fillStyle = "white";
textureContext.fillText(name, ((size.width - textureContext.measureText(name).width) / 2), size.height);
dynamicTextureEtiquetePortail.update();

let MaterialEtiquetePortail = new BABYLON.StandardMaterial("MEP", global.scene);
MaterialEtiquetePortail.diffuseTexture = dynamicTextureEtiquetePortail;
MaterialEtiquetePortail.ambientColor = BABYLON.Color3.White();		
let EtiquetePortail = BABYLON.MeshBuilder.CreatePlane("EP", {width: 4, height: 1, subdivisions: 1}, global.scene);

EtiquetePortail.billboardMode = BABYLON.Mesh.BILLBOARDMODE_ALL;
EtiquetePortail.material = MaterialEtiquetePortail;
EtiquetePortail.parent = portail;
EtiquetePortail.position.y += 3.0;

not work (Basically I did the same in function but using BABYLON.GUI)

let planeEtiquete = BABYLON.MeshBuilder.CreatePlane("EP", {width: 4, height: 1, subdivisions: 1}, global.scene);
planeEtiquete.parent = portail;
planeEtiquete.position.y += 3.0;
		
let advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh(planeEtiquete, 512, 512);
let etiquete = new BABYLON.GUI.TextBlock();
etiquete.text = name;
etiquete.fontName = "Calibri";
etiquete.color = "white";
etiquete.fontSize = 200;
advancedTexture.addControl(etiquete);

The first code works. the second does not. Maybe you have an idea of what could be the cause.

Link to comment
Share on other sites

Ok, j'ai reproduit le probleme et je t'ai mis les .max pour Babylon et pour GUI. Sur le lien, tu verras sur gauche un bouton pour rafraîchir, un checkbox et un menu pour charger le terrain.

- Charger le terrain avec le checkbox décocher te permet de voir le resultat que je devrais avoir. (sur le boite tu peut voir écrit "Start" qui est créer avec une DynamicTexture)

- Ensuite, si tu rafraîchi et que tu coche la case maintenant puis charge le terrain, tu peut voir que rien ne ce charge, la scene est planter. C’est le même code, sauf que j'utiliser AdvancedDynamicTexture. et c’est appartement quand j'utilise cela : BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh(); car si je met ca en commentaire, ca fonctionne.

Je t'ai mis des commentaires dans le code.

Le lien est ici: http://www.babylon.actifgames.com/Bug/index.html

Je t'ai fait un zip aussi si tu a besoin : http://www.babylon.actifgames.com/Bug/test.zip

Je pense que on est sur un bug bien cacher. Ah et ce n’est pas a cause de ce que je pensais au début, le faite d'avoir plusieur canvas et plusieurs moteur. 

Merci Deltakosh

Link to comment
Share on other sites

Je ne fait rien de spécial, je charge une box et a ce moment j'appelle la fonction ligne 276 qui crée rune etiquette au dessus de la box. comme tu peut le voir si le checkbox n’est pas cocher.

Je charge le terrain a la ligne 227.

Apres avoir charger le terrain, je charge les objets sur la scene ligne 243. (la box) ensuite je créer l'étiquette quand la box est créer.

Tout le reste du code, est juste pour charger la scene et le materiel de terrain. Donc inutile pour toi, mais utiles pour recréer ce que j'ai fait sur mon editeur.

Link to comment
Share on other sites

Voila sans le terrain. j’ai fait au plus simple.

Version sans bug avec l'utilisation de DynamicTexture

 http://www.babylon.actifgames.com/Bug/index1.html

Et la version avec le bug et l'utilisation de AdvancedDynamicTexture (j'ai une scene toute blanche)

 http://www.babylon.actifgames.com/Bug/index2.html

Dit moi si tu veux les zip avec, mais il suffit juste de copier le code source du .html, le reste du zip ne change pas.

Link to comment
Share on other sites

Je vient d’éditer le fichier index2.html ou je fait encore plus simple. Tout est dans une seule classe. J’espère que ca t'aideras a debugger.

J'ai retirer aussi deux ballise meta pour ce qui concernait le shaderBuilder et le CustomMaterial au cas il il ferais un conflit (mais ca ne change rien)

Je retirer le chargement de la boite et je ne charge que l’étiquette.

J'ai tenter aussi de retirer la partie Jquery qui créer mon Layout, mais pareil.

Lien mis a jour:  http://www.babylon.actifgames.com/Bug/index2.html

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...