123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- var createScene = function () {
- var scene = new BABYLON.Scene(engine);
-
- var camera = new BABYLON.ArcRotateCamera("Camera", -Math.PI / 2, 1.0, 110, BABYLON.Vector3.Zero(), scene);
- camera.attachControl(canvas, true);
- var hemi = new BABYLON.HemisphericLight("toto");
- var sphereMaterial = new BABYLON.StandardMaterial();
- //Creation of 6 spheres
- var sphere1 = BABYLON.Mesh.CreateSphere("Sphere1", 10.0, 9.0, scene);
- var sphere2 = BABYLON.Mesh.CreateSphere("Sphere2", 2.0, 9.0, scene);//Only two segments
- var sphere3 = BABYLON.Mesh.CreateSphere("Sphere3", 10.0, 9.0, scene);
- var sphere4 = BABYLON.Mesh.CreateSphere("Sphere4", 10.0, 0.5, scene);
- var sphere5 = BABYLON.Mesh.CreateSphere("Sphere5", 10.0, 9.0, scene);
- var sphere6 = BABYLON.Mesh.CreateSphere("Sphere6", 10.0, 9.0, scene);
- var sphere7 = BABYLON.Mesh.CreateSphere("Sphere7", 10.0, 9.0, scene);
- //Position the spheres
- sphere1.position.x = -30;
- sphere2.position.x = -20;
- sphere3.position.x = -10;
- sphere4.position.x = 0;
- sphere5.position.x = 10;
- sphere6.position.x = 20;
- sphere7.position.x = 30;
- // Material
- sphere1.material = sphereMaterial;
- sphere2.material = sphereMaterial;
- sphere3.material = sphereMaterial;
- sphere4.material = sphereMaterial;
- sphere5.material = sphereMaterial;
- sphere6.material = sphereMaterial;
- sphere7.material = sphereMaterial;
- // GUI
- var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("ui1");
- var panel = new BABYLON.GUI.StackPanel();
- panel.width = 0.25;
- panel.rotation = 0.2;
- panel.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- advancedTexture.addControl(panel);
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but1", "Click Me");
- button1.width = 0.2;
- button1.height = "40px";
- button1.color = "white";
- button1.cornerRadius = 20;
- button1.background = "green";
- button1.onPointerUpObservable.add(function() {
- circle.scaleX += 0.1;
- });
- panel.addControl(button1);
- var circle = new BABYLON.GUI.Ellipse();
- circle.width = "50px";
- circle.color = "white";
- circle.thickness = 5;
- circle.height = "50px";
- circle.paddingTop = "2px";
- circle.paddingBottom = "2px";
- panel.addControl(circle);
- var button2 = BABYLON.GUI.Button.CreateSimpleButton("but2", "Click Me 2");
- button2.width = 0.2;
- button2.height = "40px";
- button2.color = "white";
- button2.background = "green";
- button2.onPointerUpObservable.add(function() {
- circle.scaleX -= 0.1;
- });
- panel.addControl(button2);
- var createLabel = function(mesh) {
- var label = new BABYLON.GUI.Rectangle("label for " + mesh.name);
- label.background = "black"
- label.height = "30px";
- label.alpha = 0.5;
- label.width = "100px";
- label.cornerRadius = 20;
- label.thickness = 1;
- label.linkOffsetY = 30;
- advancedTexture.addControl(label);
- label.linkWithMesh(mesh);
- var text1 = new BABYLON.GUI.TextBlock();
- text1.text = mesh.name;
- text1.color = "white";
- label.addControl(text1);
- }
- createLabel(sphere1);
- createLabel(sphere2);
- createLabel(sphere3);
- createLabel(sphere4);
- createLabel(sphere5);
- createLabel(sphere6);
- var label = new BABYLON.GUI.Rectangle("label for " + sphere7.name);
- label.background = "black"
- label.height = "30px";
- label.alpha = 0.5;
- label.width = "100px";
- label.cornerRadius = 20;
- label.thickness = 1;
- label.linkOffsetY = 30;
- label.top = "10%";
- label.zIndex = 5;
- label.verticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_TOP;
- advancedTexture.addControl(label);
- var text1 = new BABYLON.GUI.TextBlock();
- text1.text = sphere7.name;
- text1.color = "white";
- label.addControl(text1);
- var line = new BABYLON.GUI.Line();
- line.alpha = 0.5;
- line.lineWidth = 5;
- line.dash = [5, 10];
- advancedTexture.addControl(line);
- line.linkWithMesh(sphere7);
- line.connectedControl = label;
- var endRound = new BABYLON.GUI.Ellipse();
- endRound.width = "10px";
- endRound.background = "black";
- endRound.height = "10px";
- endRound.color = "white";
- advancedTexture.addControl(endRound);
- endRound.linkWithMesh(sphere7);
- // Plane
- var plane = BABYLON.Mesh.CreatePlane("plane", 20);
- plane.parent = sphere4;
- plane.position.y = -10;
- // GUI
- var advancedTexture2 = BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh(plane);
- var panel2 = new BABYLON.GUI.StackPanel();
- panel2.top = "100px";
- advancedTexture2.addControl(panel2);
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but1", "Click Me");
- button1.width = 1;
- button1.height = "100px";
- button1.color = "white";
- button1.fontSize = 50;
- button1.background = "green";
- panel2.addControl(button1);
- var textblock = new BABYLON.GUI.TextBlock();
- textblock.height = "150px";
- textblock.fontSize = 100;
- textblock.text = "please pick an option:";
- panel2.addControl(textblock);
- var addRadio = function(text, parent) {
- var button = new BABYLON.GUI.RadioButton();
- button.width = "40px";
- button.height = "40px";
- button.color = "white";
- button.background = "green";
- button.onIsCheckedChangedObservable.add(function(state) {
- if (state) {
- textblock.text = "You selected " + text;
- }
- });
- var header = BABYLON.GUI.Control.AddHeader(button, text, "400px", { isHorizontal: true, controlFirst: true });
- header.height = "100px";
- header.children[1].fontSize = 80;
- header.children[1].onPointerDownObservable.add(function() {
- button.isChecked = !button.isChecked;
- });
- parent.addControl(header);
- }
- addRadio("option 1", panel2);
- addRadio("option 2", panel2);
- addRadio("option 3", panel2);
- addRadio("option 4", panel2);
- addRadio("option 5", panel2);
- scene.registerBeforeRender(function() {
- panel.rotation += 0.01;
- });
- // Another GUI on the right
- var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI");
- advancedTexture.layer.layerMask = 2;
- var panel3 = new BABYLON.GUI.StackPanel();
- panel3.width = "220px";
- panel3.fontSize = "14px";
- panel3.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_RIGHT;
- panel3.verticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER;
- advancedTexture.addControl(panel3);
- var checkbox = new BABYLON.GUI.Checkbox();
- checkbox.width = "20px";
- checkbox.height = "20px";
- checkbox.isChecked = true;
- checkbox.color = "green";
- var panelForCheckbox = BABYLON.GUI.Control.AddHeader(checkbox, "checkbox", "180px", { isHorizontal: true, controlFirst: true});
- panelForCheckbox.color = "white";
- panelForCheckbox.height = "20px";
- panelForCheckbox.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- panel3.addControl(panelForCheckbox);
- var header = new BABYLON.GUI.TextBlock();
- header.text = "Slider:";
- header.height = "40px";
- header.color = "white";
- header.textHorizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- header.paddingTop = "10px";
- panel3.addControl(header);
- var slider = new BABYLON.GUI.Slider();
- slider.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- slider.minimum = 0;
- slider.maximum = 2 * Math.PI;
- slider.color = "green";
- slider.value = 0;
- slider.height = "20px";
- slider.width = "200px";
- panel3.addControl(slider);
- header = new BABYLON.GUI.TextBlock();
- header.text = "Sphere diffuse:";
- header.height = "40px";
- header.color = "white";
- header.textHorizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- header.paddingTop = "10px";
- panel3.addControl(header);
- var picker = new BABYLON.GUI.ColorPicker();
- picker.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
- picker.value = sphereMaterial.diffuseColor;
- picker.height = "150px";
- picker.width = "150px";
- picker.onValueChangedObservable.add(function(value) { // value is a color3
- sphereMaterial.diffuseColor = value;
- });
- panel3.addControl(picker);
- return scene;
- };
|