webvr.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var createScene = function() {
  2. // Create scene
  3. var scene = new BABYLON.Scene(engine);
  4. // Create simple sphere
  5. var sphere = BABYLON.Mesh.CreateIcoSphere("sphere", {radius:0.2, flat:true, subdivisions: 1}, this.scene);
  6. sphere.position.y = 3;
  7. sphere.material = new BABYLON.StandardMaterial("sphere material",scene)
  8. // Lights and camera
  9. var light = new BABYLON.DirectionalLight("light", new BABYLON.Vector3(0, -0.5, 1.0), scene);
  10. light.position = new BABYLON.Vector3(0, 5, -2);
  11. var camera = new BABYLON.ArcRotateCamera("camera", -Math.PI / 2, Math.PI / 4, 3, new BABYLON.Vector3(0, 3, 0), scene);
  12. camera.attachControl(canvas, true);
  13. scene.activeCamera.beta += 0.8;
  14. // Default Environment
  15. var environment = scene.createDefaultEnvironment({ enableGroundShadow: true, groundYBias: 1 });
  16. environment.setMainColor(BABYLON.Color3.FromHexString("#74b9ff"))
  17. // Shadows
  18. var shadowGenerator = new BABYLON.ShadowGenerator(1024, light);
  19. shadowGenerator.useBlurExponentialShadowMap = true;
  20. shadowGenerator.blurKernel = 32;
  21. shadowGenerator.addShadowCaster(sphere, true);
  22. // Enable VR
  23. var vrHelper = scene.createDefaultVRExperience({createDeviceOrientationCamera:false});
  24. vrHelper.enableTeleportation({floorMeshes: [environment.ground]});
  25. // Runs every frame to rotate the sphere
  26. scene.onBeforeRenderObservable.add(()=>{
  27. sphere.rotation.y += 0.0001*scene.getEngine().getDeltaTime();
  28. sphere.rotation.x += 0.0001*scene.getEngine().getDeltaTime();
  29. })
  30. // GUI
  31. var plane = BABYLON.Mesh.CreatePlane("plane", 1);
  32. plane.position = new BABYLON.Vector3(0.4, 4, 0.4)
  33. var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh(plane);
  34. var panel = new BABYLON.GUI.StackPanel();
  35. advancedTexture.addControl(panel);
  36. var header = new BABYLON.GUI.TextBlock();
  37. header.text = "Color GUI";
  38. header.height = "100px";
  39. header.color = "white";
  40. header.textHorizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER;
  41. header.fontSize = "120"
  42. panel.addControl(header);
  43. var picker = new BABYLON.GUI.ColorPicker();
  44. picker.value = sphere.material.diffuseColor;
  45. picker.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER;
  46. picker.height = "350px";
  47. picker.width = "350px";
  48. picker.onValueChangedObservable.add(function(value) {
  49. sphere.material.diffuseColor.copyFrom(value);
  50. });
  51. panel.addControl(picker);
  52. return scene;
  53. };
  54. var colors = {
  55. seaFoam: BABYLON.Color3.FromHexString("#16a085"),
  56. green: BABYLON.Color3.FromHexString("#27ae60"),
  57. blue: BABYLON.Color3.FromHexString("#2980b9"),
  58. purple: BABYLON.Color3.FromHexString("#8e44ad"),
  59. navy: BABYLON.Color3.FromHexString("#2c3e50"),
  60. yellow: BABYLON.Color3.FromHexString("#f39c12"),
  61. orange: BABYLON.Color3.FromHexString("#d35400"),
  62. red: BABYLON.Color3.FromHexString("#c0392b"),
  63. white: BABYLON.Color3.FromHexString("#bdc3c7"),
  64. gray: BABYLON.Color3.FromHexString("#7f8c8d")
  65. }