multimat.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var CreateMultiMaterialScene = function(engine) {
  2. var scene = new BABYLON.Scene(engine);
  3. var camera = new BABYLON.ArcRotateCamera("Camera", 0, 0, 10, BABYLON.Vector3.Zero(), scene);
  4. var light = new BABYLON.PointLight("Omni", new BABYLON.Vector3(20, 100, 2), scene);
  5. var material0 = new BABYLON.StandardMaterial("mat0", scene);
  6. material0.diffuseColor = new BABYLON.Color3(1, 0, 0);
  7. material0.bumpTexture = new BABYLON.Texture("Scenes/Customs/normalMap.jpg", scene);
  8. var material1 = new BABYLON.StandardMaterial("mat1", scene);
  9. material1.diffuseColor = new BABYLON.Color3(0, 0, 1);
  10. var material2 = new BABYLON.StandardMaterial("mat2", scene);
  11. material2.emissiveColor = new BABYLON.Color3(0.4, 0, 0.4);
  12. var multimat = new BABYLON.MultiMaterial("multi", scene);
  13. multimat.subMaterials.push(material0);
  14. multimat.subMaterials.push(material1);
  15. multimat.subMaterials.push(material2);
  16. var sphere = BABYLON.Mesh.CreateSphere("Sphere0", 16, 3, scene);
  17. sphere.material = multimat;
  18. sphere.subMeshes = [];
  19. var verticesCount = sphere.getTotalVertices();
  20. sphere.subMeshes.push(new BABYLON.SubMesh(0, 0, verticesCount, 0, 900, sphere));
  21. sphere.subMeshes.push(new BABYLON.SubMesh(1, 0, verticesCount, 900, 900, sphere));
  22. sphere.subMeshes.push(new BABYLON.SubMesh(2, 0, verticesCount, 1800, 2088, sphere));
  23. camera.setPosition(new BABYLON.Vector3(-3, 3, 0));
  24. // Animations
  25. scene.registerBeforeRender(function () {
  26. sphere.rotation.y += 0.01;
  27. });
  28. return scene;
  29. };