| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751 |
- var createNodeMaterial = function(scene) {
- var nodeMaterial = new BABYLON.NodeMaterial("node", scene, { emitComments: true });
- // nodeMaterial.setToDefault();
- // Blocks
- // Vertex
- var positionInput = new BABYLON.InputBlock("position");
- positionInput.setAsAttribute("position");
- var worldInput = new BABYLON.InputBlock("world");
- worldInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.World);
- var worldPos = new BABYLON.Vector4TransformBlock("worldPos");
- positionInput.connectTo(worldPos);
- worldInput.connectTo(worldPos);
- var normalInput = new BABYLON.InputBlock("normal");
- normalInput.setAsAttribute("normal");
- var worldNormal = new BABYLON.Vector4TransformBlock("worldNormal");
- normalInput.connectTo(worldNormal);
- worldInput.connectTo(worldNormal);
- var viewProjectionInput = new BABYLON.InputBlock("viewProjection");
- viewProjectionInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.ViewProjection);
- var worldPosdMultipliedByViewProjection = new BABYLON.Vector4TransformBlock("worldPos * viewProjectionTransform");
- worldPos.connectTo(worldPosdMultipliedByViewProjection);
- viewProjectionInput.connectTo(worldPosdMultipliedByViewProjection);
- var vertexOutput = new BABYLON.VertexOutputBlock("vertexOutput");
- worldPosdMultipliedByViewProjection.connectTo(vertexOutput);
- // Pixel
- var colorInput = new BABYLON.InputBlock("color");
- colorInput.value = new BABYLON.Color3(1, 0, 0);
- var colorMultiplier = new BABYLON.MultiplyBlock("color multiplier");
- colorInput.connectTo(colorMultiplier);
- var lightNode = new BABYLON.LightBlock("All Lights");
- worldPos.output.connectTo(lightNode.worldPosition);
- worldNormal.output.connectTo(lightNode.worldNormal);
- lightNode.diffuseOutput.connectTo(colorMultiplier.right);
- var pixelOutput = new BABYLON.FragmentOutputBlock("pixelOutput");
- colorMultiplier.connectTo(pixelOutput);
- // Add to nodes
- nodeMaterial.addOutputNode(vertexOutput);
- nodeMaterial.addOutputNode(pixelOutput);
- // Build
- nodeMaterial.build(true);
- scene.debugLayer.show();
- scene.debugLayer.select(nodeMaterial);
- return nodeMaterial;
- }
- var createScene = function() {
- // This creates a basic Babylon Scene object (non-mesh)
- var scene = new BABYLON.Scene(engine);
- // This creates and positions a free camera (non-mesh)
- var camera = new BABYLON.ArcRotateCamera("camera1", 1.14, 1.13, 10, BABYLON.Vector3.Zero(), scene);
- // This targets the camera to scene origin
- camera.setTarget(BABYLON.Vector3.Zero());
- // This attaches the camera to the canvas
- camera.attachControl(canvas, true);
- // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
- var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light.intensity = 0.7;
- var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, -11, 5), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light2.intensity = 0.7;
- // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
- var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
- sphere.material = createNodeMaterial(scene);
- return scene;
- };
- /////////////////////////
- var createNodeMaterial = function(scene) {
- var nodeMaterial = new BABYLON.NodeMaterial("node", scene, { emitComments: true });
- // nodeMaterial.setToDefault();
- // Blocks
- // Vertex
- var positionInput = new BABYLON.InputBlock("position");
- positionInput.setAsAttribute("position");
- var worldInput = new BABYLON.InputBlock("world");
- worldInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.World);
- var worldPos = new BABYLON.Vector4TransformBlock("worldPos");
- positionInput.connectTo(worldPos);
- worldInput.connectTo(worldPos);
- var normalInput = new BABYLON.InputBlock("normal");
- normalInput.setAsAttribute("normal");
- var worldNormal = new BABYLON.Vector4TransformBlock("worldNormal");
- normalInput.connectTo(worldNormal);
- worldInput.connectTo(worldNormal);
- var viewProjectionInput = new BABYLON.InputBlock("viewProjection");
- viewProjectionInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.ViewProjection);
- var worldPosdMultipliedByViewProjection = new BABYLON.Vector4TransformBlock("worldPos * viewProjectionTransform");
- worldPos.connectTo(worldPosdMultipliedByViewProjection);
- viewProjectionInput.connectTo(worldPosdMultipliedByViewProjection);
- var vertexOutput = new BABYLON.VertexOutputBlock("vertexOutput");
- worldPosdMultipliedByViewProjection.connectTo(vertexOutput);
- // Pixel
- var colorInput = new BABYLON.InputBlock("color");
- colorInput.value = new BABYLON.Color4(1, 0, 0, 1);
- var colorMultiplier2 = new BABYLON.MultiplyBlock("color multiplier2");
- var diffuseTextureBlock = new BABYLON.TextureBlock("diffuseTexture");
- diffuseTextureBlock.texture = new BABYLON.Texture("/playground/textures/bloc.jpg");
- diffuseTextureBlock.connectTo(colorMultiplier2);
- colorInput.connectTo(colorMultiplier2);
- var pixelOutput = new BABYLON.FragmentOutputBlock("pixelOutput");
- colorMultiplier2.connectTo(pixelOutput);
- // Add to nodes
- nodeMaterial.addOutputNode(vertexOutput);
- nodeMaterial.addOutputNode(pixelOutput);
- // Build
- nodeMaterial.build(true);
- scene.debugLayer.show();
- scene.debugLayer.select(nodeMaterial);
- return nodeMaterial;
- }
- var createScene = function() {
- // This creates a basic Babylon Scene object (non-mesh)
- var scene = new BABYLON.Scene(engine);
- // This creates and positions a free camera (non-mesh)
- var camera = new BABYLON.ArcRotateCamera("camera1", 1.14, 1.13, 10, BABYLON.Vector3.Zero(), scene);
- // This targets the camera to scene origin
- camera.setTarget(BABYLON.Vector3.Zero());
- // This attaches the camera to the canvas
- camera.attachControl(canvas, true);
- // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
- var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light.intensity = 0.7;
- var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, -11, 5), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light2.intensity = 0.7;
- // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
- var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
- sphere.material = createNodeMaterial(scene);
- return scene;
- };
- /*
- - bones
- */
- var createNodeMaterial = function(scene) {
- var nodeMaterial = new BABYLON.NodeMaterial("node", scene, { emitComments: true });
- // nodeMaterial.setToDefault();
- // Blocks
- // Vertex
- var positionInput = new BABYLON.InputBlock("position");
- positionInput.setAsAttribute("position");
- var worldInput = new BABYLON.InputBlock("world");
- worldInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.World);
- var worldPos = new BABYLON.Vector4TransformBlock("worldPos");
- positionInput.connectTo(worldPos);
- worldInput.connectTo(worldPos);
- var normalInput = new BABYLON.InputBlock("normal");
- normalInput.setAsAttribute("normal");
- var worldNormal = new BABYLON.Vector4TransformBlock("worldNormal");
- normalInput.connectTo(worldNormal);
- worldInput.connectTo(worldNormal);
- var viewProjectionInput = new BABYLON.InputBlock("viewProjection");
- viewProjectionInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.ViewProjection);
- var worldPosdMultipliedByViewProjection = new BABYLON.Vector4TransformBlock("worldPos * viewProjectionTransform");
- worldPos.connectTo(worldPosdMultipliedByViewProjection);
- viewProjectionInput.connectTo(worldPosdMultipliedByViewProjection);
- var vertexOutput = new BABYLON.VertexOutputBlock("vertexOutput");
- worldPosdMultipliedByViewProjection.connectTo(vertexOutput);
- // Pixel
- var colorInput = new BABYLON.InputBlock("color");
- colorInput.value = new BABYLON.Color4(1, 0, 0, 1);
- var colorMultiplier = new BABYLON.MultiplyBlock("color multiplier");
- var diffuseTextureBlock = new BABYLON.TextureBlock("diffuseTexture");
- diffuseTextureBlock.texture = new BABYLON.Texture("/playground/textures/bloc.jpg");
- var diffuse2TextureBlock = new BABYLON.TextureBlock("diffuseTexture2");
- diffuse2TextureBlock.texture = new BABYLON.Texture("/playground/textures/crate.png");
- diffuseTextureBlock.connectTo(colorMultiplier);
- diffuse2TextureBlock.connectTo(colorMultiplier);
- var colorMultiplier2 = new BABYLON.MultiplyBlock("color multiplier2");
- colorMultiplier.connectTo(colorMultiplier2);
- colorInput.connectTo(colorMultiplier2);
- var fog = new BABYLON.FogBlock("fog");
- worldPos.connectTo(fog);
- colorMultiplier2.connectTo(fog);
- var pixelOutput = new BABYLON.FragmentOutputBlock("pixelOutput");
- fog.connectTo(pixelOutput);
- // Add to nodes
- nodeMaterial.addOutputNode(vertexOutput);
- nodeMaterial.addOutputNode(pixelOutput);
- // Build
- nodeMaterial.build(true);
- scene.debugLayer.show();
- scene.debugLayer.select(nodeMaterial);
- return nodeMaterial;
- }
- var createScene = function() {
- // This creates a basic Babylon Scene object (non-mesh)
- var scene = new BABYLON.Scene(engine);
- // This creates and positions a free camera (non-mesh)
- var camera = new BABYLON.ArcRotateCamera("camera1", 1.14, 1.13, 10, BABYLON.Vector3.Zero(), scene);
- // This targets the camera to scene origin
- camera.setTarget(BABYLON.Vector3.Zero());
- // This attaches the camera to the canvas
- camera.attachControl(canvas, true);
- // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
- var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light.intensity = 0.7;
- var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, -11, 5), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light2.intensity = 0.7;
- // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
- var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
- sphere.material = createNodeMaterial(scene);
- scene.fogMode = BABYLON.Scene.FOGMODE_LINEAR;
- scene.fogColor = scene.clearColor.clone();
- scene.fogStart = 2.0;
- scene.fogEnd = 40.0;
- return scene;
- };
- ////////////////////
- var createNodeMaterial = function(scene) {
- var nodeMaterial = new BABYLON.NodeMaterial("node", scene, { emitComments: true });
- // nodeMaterial.setToDefault();
- // Blocks
- // Vertex
- var morphTargets = new BABYLON.MorphTargetsBlock("morphTargets");
- var worldInput = new BABYLON.InputBlock("world");
- worldInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.World);
- var worldPos = new BABYLON.Vector4TransformBlock("worldPos");
- morphTargets.connectTo(worldPos);
- worldInput.connectTo(worldPos);
- var normalInput = new BABYLON.InputBlock("normal");
- normalInput.setAsAttribute("normal");
- var worldNormal = new BABYLON.Vector4TransformBlock("worldNormal");
- normalInput.connectTo(worldNormal);
- worldInput.connectTo(worldNormal);
- var viewProjectionInput = new BABYLON.InputBlock("viewProjection");
- viewProjectionInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.ViewProjection);
- var worldPosdMultipliedByViewProjection = new BABYLON.Vector4TransformBlock("worldPos * viewProjectionTransform");
- worldPos.connectTo(worldPosdMultipliedByViewProjection);
- viewProjectionInput.connectTo(worldPosdMultipliedByViewProjection);
- var vertexOutput = new BABYLON.VertexOutputBlock("vertexOutput");
- worldPosdMultipliedByViewProjection.connectTo(vertexOutput);
- // Pixel
- var colorInput = new BABYLON.InputBlock("color");
- colorInput.value = new BABYLON.Color4(1, 0, 0, 1);
- var colorMultiplier = new BABYLON.MultiplyBlock("color multiplier");
- var diffuseTextureBlock = new BABYLON.TextureBlock("diffuseTexture");
- diffuseTextureBlock.texture = new BABYLON.Texture("/playground/textures/bloc.jpg");
- var diffuse2TextureBlock = new BABYLON.TextureBlock("diffuseTexture2");
- diffuse2TextureBlock.texture = new BABYLON.Texture("/playground/textures/crate.png");
- diffuseTextureBlock.connectTo(colorMultiplier);
- diffuse2TextureBlock.connectTo(colorMultiplier);
- var colorMultiplier2 = new BABYLON.MultiplyBlock("color multiplier2");
- colorMultiplier.connectTo(colorMultiplier2);
- colorInput.connectTo(colorMultiplier2);
- var fog = new BABYLON.FogBlock("fog");
- worldPos.connectTo(fog);
- colorMultiplier2.connectTo(fog);
- var pixelOutput = new BABYLON.FragmentOutputBlock("pixelOutput");
- fog.connectTo(pixelOutput);
- // Add to nodes
- nodeMaterial.addOutputNode(vertexOutput);
- nodeMaterial.addOutputNode(pixelOutput);
- // Build
- nodeMaterial.build(true);
- scene.debugLayer.show();
- scene.debugLayer.select(nodeMaterial);
- return nodeMaterial;
- }
- var addSpike = function(mesh) {
- var positions = mesh.getVerticesData(BABYLON.VertexBuffer.PositionKind);
- var normals = mesh.getVerticesData(BABYLON.VertexBuffer.NormalKind);
- var indices = mesh.getIndices();
- for (var index = 0; index < 5; index++) {
- var randomVertexID = (mesh.getTotalVertices() * Math.random()) | 0;
- var position = BABYLON.Vector3.FromArray(positions, randomVertexID * 3);
- var normal = BABYLON.Vector3.FromArray(normals, randomVertexID * 3);
- position.addInPlace(normal);
- position.toArray(positions, randomVertexID * 3);
- }
- BABYLON.VertexData.ComputeNormals(positions, indices, normals);
- mesh.updateVerticesData(BABYLON.VertexBuffer.PositionKind, positions, false, false);
- mesh.updateVerticesData(BABYLON.VertexBuffer.NormalKind, normals, false, false);
- }
- var createScene = function() {
- // This creates a basic Babylon Scene object (non-mesh)
- var scene = new BABYLON.Scene(engine);
- // This creates and positions a free camera (non-mesh)
- var camera = new BABYLON.ArcRotateCamera("camera1", 1.14, 1.13, 10, BABYLON.Vector3.Zero(), scene);
- // This targets the camera to scene origin
- camera.setTarget(BABYLON.Vector3.Zero());
- // This attaches the camera to the canvas
- camera.attachControl(canvas, true);
- // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
- var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light.intensity = 0.7;
- var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, -11, 5), scene);
- // Default intensity is 1. Let's dim the light a small amount
- light2.intensity = 0.7;
- // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
- var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
- sphere.material = createNodeMaterial(scene);
- scene.fogMode = BABYLON.Scene.FOGMODE_LINEAR;
- scene.fogColor = scene.clearColor.clone();
- scene.fogStart = 2.0;
- scene.fogEnd = 40.0;
- var sphere2 = BABYLON.Mesh.CreateSphere("sphere2", 16, 2, scene);
- sphere2.setEnabled(false);
- addSpike(sphere2);
- var sphere3 = BABYLON.Mesh.CreateSphere("sphere3", 16, 2, scene);
- sphere3.setEnabled(false);
- addSpike(sphere3);
- var sphere4 = BABYLON.Mesh.CreateSphere("sphere4", 16, 2, scene);
- sphere4.setEnabled(false);
- addSpike(sphere4);
- var sphere5 = BABYLON.Mesh.CreateSphere("sphere5", 16, 2, scene);
- sphere5.setEnabled(false);
- addSpike(sphere5);
- var manager = new BABYLON.MorphTargetManager();
- sphere.morphTargetManager = manager;
- var target0 = BABYLON.MorphTarget.FromMesh(sphere2, "sphere2", 0.25);
- manager.addTarget(target0);
- var target1 = BABYLON.MorphTarget.FromMesh(sphere3, "sphere3", 0.25);
- manager.addTarget(target1);
- var target2 = BABYLON.MorphTarget.FromMesh(sphere4, "sphere4", 0.25);
- manager.addTarget(target2);
- var target3 = BABYLON.MorphTarget.FromMesh(sphere5, "sphere5", 0.25);
- manager.addTarget(target3);
- // GUI
- var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI");
- var panel = new BABYLON.GUI.StackPanel();
- panel.width = "220px";
- panel.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_RIGHT;
- panel.verticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER;
- advancedTexture.addControl(panel);
- var addSlider = function(text, callback) {
- var header = new BABYLON.GUI.TextBlock();
- header.text = text;
- header.height = "30px";
- header.color = "white";
- panel.addControl(header);
- var slider = new BABYLON.GUI.Slider();
- slider.minimum = 0;
- slider.maximum = 1;
- slider.value = 0;
- slider.height = "20px";
- slider.width = "200px";
- slider.onValueChangedObservable.add(function(value) {
- callback(value);
- });
- panel.addControl(slider);
- }
- addSlider("Influence #1", (value) => {
- target0.influence = value;
- });
- addSlider("Influence #2", (value) => {
- target1.influence = value;
- });
- addSlider("Influence #3", (value) => {
- target2.influence = value;
- });
- addSlider("Influence #4", (value) => {
- target3.influence = value;
- });
- return scene;
- };
- //////
- var createNodeMaterial = function(scene) {
- var nodeMaterial = new BABYLON.NodeMaterial("node", scene, { emitComments: true });
- // nodeMaterial.setToDefault();
- // Blocks
- // Vertex
- var morphTargets = new BABYLON.MorphTargetsBlock("morphTargets");
- var bonesBlock = new BABYLON.BonesBlock("bonesBlock");
- var worldPos = new BABYLON.Vector4TransformBlock("worldPos");
- morphTargets.connectTo(worldPos);
- bonesBlock.connectTo(worldPos);
- var normalInput = new BABYLON.InputBlock("normal");
- normalInput.setAsAttribute("normal");
- var worldNormal = new BABYLON.Vector4TransformBlock("worldNormal");
- normalInput.connectTo(worldNormal);
- bonesBlock.connectTo(worldNormal);
- var viewProjectionInput = new BABYLON.InputBlock("viewProjection");
- viewProjectionInput.setAsWellKnownValue(BABYLON.NodeMaterialWellKnownValues.ViewProjection);
- var worldPosdMultipliedByViewProjection = new BABYLON.Vector4TransformBlock("worldPos * viewProjectionTransform");
- worldPos.connectTo(worldPosdMultipliedByViewProjection);
- viewProjectionInput.connectTo(worldPosdMultipliedByViewProjection);
- var vertexOutput = new BABYLON.VertexOutputBlock("vertexOutput");
- worldPosdMultipliedByViewProjection.connectTo(vertexOutput);
- // Pixel
- var colorInput = new BABYLON.InputBlock("color");
- colorInput.value = new BABYLON.Color4(1, 0, 0, 1);
- var colorMultiplier = new BABYLON.MultiplyBlock("color multiplier");
- var diffuseTextureBlock = new BABYLON.TextureBlock("diffuseTexture");
- diffuseTextureBlock.texture = new BABYLON.Texture("/playground/textures/bloc.jpg");
- var diffuse2TextureBlock = new BABYLON.TextureBlock("diffuseTexture2");
- diffuse2TextureBlock.texture = new BABYLON.Texture("/playground/textures/crate.png");
- diffuseTextureBlock.connectTo(colorMultiplier);
- diffuse2TextureBlock.connectTo(colorMultiplier);
- var colorMultiplier2 = new BABYLON.MultiplyBlock("color multiplier2");
- colorMultiplier.connectTo(colorMultiplier2);
- colorInput.connectTo(colorMultiplier2);
- var fog = new BABYLON.FogBlock("fog");
- worldPos.connectTo(fog);
- colorMultiplier2.connectTo(fog);
- var pixelOutput = new BABYLON.FragmentOutputBlock("pixelOutput");
- fog.connectTo(pixelOutput);
- // Add to nodes
- nodeMaterial.addOutputNode(vertexOutput);
- nodeMaterial.addOutputNode(pixelOutput);
- // Build
- nodeMaterial.build(true);
- scene.debugLayer.show();
- scene.debugLayer.select(nodeMaterial);
- return nodeMaterial;
- }
- var delayCreateScene = function() {
- // Model by Mixamo
- engine.enableOfflineSupport = false;
- // This is really important to tell Babylon.js to use decomposeLerp and matrix interpolation
- BABYLON.Animation.AllowMatricesInterpolation = true;
- var scene = new BABYLON.Scene(engine);
- var camera = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 4, 3, new BABYLON.Vector3(0, 1, 0), scene);
- camera.attachControl(canvas, true);
- camera.lowerRadiusLimit = 2;
- camera.upperRadiusLimit = 10;
- camera.wheelDeltaPercentage = 0.01;
- var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
- light.intensity = 0.6;
- light.specular = BABYLON.Color3.Black();
- var light2 = new BABYLON.DirectionalLight("dir01", new BABYLON.Vector3(0, -0.5, -1.0), scene);
- light2.position = new BABYLON.Vector3(0, 5, 5);
- // Shadows
- var shadowGenerator = new BABYLON.ShadowGenerator(1024, light2);
- shadowGenerator.useBlurExponentialShadowMap = true;
- shadowGenerator.blurKernel = 32;
- engine.displayLoadingUI();
- BABYLON.SceneLoader.ImportMesh("", "/playground/scenes/", "dummy3.babylon", scene, function(newMeshes, particleSystems, skeletons) {
- var skeleton = skeletons[0];
- shadowGenerator.addShadowCaster(scene.meshes[0], true);
- for (var index = 0; index < newMeshes.length; index++) {
- newMeshes[index].receiveShadows = false;;
- }
- newMeshes[0].material = createNodeMaterial(scene);
- var helper = scene.createDefaultEnvironment({
- enableGroundShadow: true
- });
- helper.setMainColor(BABYLON.Color3.Gray());
- helper.ground.position.y += 0.01;
- // ROBOT
- skeleton.animationPropertiesOverride = new BABYLON.AnimationPropertiesOverride();
- skeleton.animationPropertiesOverride.enableBlending = true;
- skeleton.animationPropertiesOverride.blendingSpeed = 0.05;
- skeleton.animationPropertiesOverride.loopMode = 1;
- var idleRange = skeleton.getAnimationRange("YBot_Idle");
- var walkRange = skeleton.getAnimationRange("YBot_Walk");
- var runRange = skeleton.getAnimationRange("YBot_Run");
- var leftRange = skeleton.getAnimationRange("YBot_LeftStrafeWalk");
- var rightRange = skeleton.getAnimationRange("YBot_RightStrafeWalk");
- // IDLE
- if (idleRange) scene.beginAnimation(skeleton, idleRange.from, idleRange.to, true);
- // UI
- var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI");
- var UiPanel = new BABYLON.GUI.StackPanel();
- UiPanel.width = "220px";
- UiPanel.fontSize = "14px";
- UiPanel.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_RIGHT;
- UiPanel.verticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER;
- advancedTexture.addControl(UiPanel);
- // ..
- var button = BABYLON.GUI.Button.CreateSimpleButton("but1", "Play Idle");
- button.paddingTop = "10px";
- button.width = "100px";
- button.height = "50px";
- button.color = "white";
- button.background = "green";
- button.onPointerDownObservable.add(() => {
- if (idleRange) scene.beginAnimation(skeleton, idleRange.from, idleRange.to, true);
- });
- UiPanel.addControl(button);
- // ..
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but2", "Play Walk");
- button1.paddingTop = "10px";
- button1.width = "100px";
- button1.height = "50px";
- button1.color = "white";
- button1.background = "green";
- button1.onPointerDownObservable.add(() => {
- if (walkRange) scene.beginAnimation(skeleton, walkRange.from, walkRange.to, true);
- });
- UiPanel.addControl(button1);
- // ..
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but3", "Play Run");
- button1.paddingTop = "10px";
- button1.width = "100px";
- button1.height = "50px";
- button1.color = "white";
- button1.background = "green";
- button1.onPointerDownObservable.add(() => {
- if (runRange) scene.beginAnimation(skeleton, runRange.from, runRange.to, true);
- });
- UiPanel.addControl(button1);
- // ..
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but4", "Play Left");
- button1.paddingTop = "10px";
- button1.width = "100px";
- button1.height = "50px";
- button1.color = "white";
- button1.background = "green";
- button1.onPointerDownObservable.add(() => {
- if (leftRange) scene.beginAnimation(skeleton, leftRange.from, leftRange.to, true);
- });
- UiPanel.addControl(button1);
- // ..
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but5", "Play Right");
- button1.paddingTop = "10px";
- button1.width = "100px";
- button1.height = "50px";
- button1.color = "white";
- button1.background = "green";
- button1.onPointerDownObservable.add(() => {
- if (rightRange) scene.beginAnimation(skeleton, rightRange.from, rightRange.to, true);
- });
- UiPanel.addControl(button1);
- // ..
- var button1 = BABYLON.GUI.Button.CreateSimpleButton("but6", "Play Blend");
- button1.paddingTop = "10px";
- button1.width = "100px";
- button1.height = "50px";
- button1.color = "white";
- button1.background = "green";
- button1.onPointerDownObservable.add(() => {
- if (walkRange && leftRange) {
- scene.stopAnimation(skeleton);
- var walkAnim = scene.beginWeightedAnimation(skeleton, walkRange.from, walkRange.to, 0.5, true);
- var leftAnim = scene.beginWeightedAnimation(skeleton, leftRange.from, leftRange.to, 0.5, true);
- // Note: Sync Speed Ratio With Master Walk Animation
- walkAnim.syncWith(null);
- leftAnim.syncWith(walkAnim);
- }
- });
- UiPanel.addControl(button1);
- engine.hideLoadingUI();
- });
- return scene;
- };
|