Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
var canvas = document.getElementById("renderCanvas");
var createScene = function () {
var scene = new BABYLON.Scene(engine);
scene.debugLayer.show();
var camera = new BABYLON.ArcRotateCamera('MainCamera1', 0, 0, 3, BABYLON.Vector3(0, 1.2, 0), scene, true);
camera.position = new BABYLON.Vector3(0, 1.2, -1.1);
camera.attachControl(canvas, true);
camera.inputs.attached.mousewheel.detachControl(canvas);
var light1 = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, 1, 0), scene);
var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, 1, -1), scene);
//for VR
var vrHelper = scene.createDefaultVRExperience({controllerMeshes:false});
vrHelper.currentVRCamera.position.y = 300;
const leftHand = BABYLON.Mesh.CreateBox("",0.1, scene);
leftHand.scaling.z = 2;
leftHand.isVisible =false;
const rightHand = BABYLON.Mesh.CreateBox("",0.1, scene);
rightHand.scaling.z = 2;
rightHand.isVisible =false;
var swordMesh;
BABYLON.SceneLoader.ImportMeshAsync("", "../../assets/meshes/controllers/oculus/", "sword.glb", scene).then(function(result) {
swordMesh = result.meshes[0];
});
var rightQuestControllerMesh;
BABYLON.SceneLoader.ImportMeshAsync("", "../../assets/meshes/controllers/oculus/", "right_quest.glb", scene).then(function(result) {
rightQuestControllerMesh = result.meshes[0];
});
vrHelper.webVRCamera.onControllerMeshLoadedObservable.add(e => {
vrHelper.webVRCamera.leftController.attachToMesh(swordMesh);
vrHelper.webVRCamera.rightController.attachToMesh(rightQuestControllerMesh);
});
scene.onBeforeRenderObservable.add(()=>{
if(vrHelper.webVRCamera.leftController){
leftHand.position = vrHelper.webVRCamera.leftController.devicePosition.clone();
leftHand.rotationQuaternion = vrHelper.webVRCamera.leftController.deviceRotationQuaternion.clone();
}
if(vrHelper.webVRCamera.rightController){
rightHand.position = vrHelper.webVRCamera.rightController.devicePosition.clone();
rightHand.rotationQuaternion = vrHelper.webVRCamera.rightController.deviceRotationQuaternion.clone();
}
});
//おまけ swodの刃(Lame)だけglowで光らせる
var gl = new BABYLON.GlowLayer("glow", scene,{
});
gl.customEmissiveColorSelector = function(mesh, subMesh, material, result) {
if (mesh.name === "Lame") {
result.set(0, 0, 0.5, 1);
} else {
result.set(0, 0, 0, 0);
}
}
return scene;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment