three.js骨骼控制/可视化和骨骼动画 如何正确地可视化骨骼?我觉得我做对了,但不知怎么的,骨架没有显示出来 如何在单独的GUI控件中为GUI中的每个骨骼指定骨骼在x、y、z轴上的位置/旋转,例如“bone_0.x”而不是“bone_0”?现在每个“Bone_0”都在控制旋转和位置。。。或者有没有一种方法可以通过单击骨骼来控制骨骼,并使用关键点输入来平移/旋转,例如“g”+“x”在x轴上平移骨骼
提前谢谢three.js骨骼控制/可视化和骨骼动画 如何正确地可视化骨骼?我觉得我做对了,但不知怎么的,骨架没有显示出来 如何在单独的GUI控件中为GUI中的每个骨骼指定骨骼在x、y、z轴上的位置/旋转,例如“bone_0.x”而不是“bone_0”?现在每个“Bone_0”都在控制旋转和位置。。。或者有没有一种方法可以通过单击骨骼来控制骨骼,并使用关键点输入来平移/旋转,例如“g”+“x”在x轴上平移骨骼,three.js,Three.js,提前谢谢 //load file let mixer; const loader = new THREE.GLTFLoader(); loader.load('js/simple.gltf', function (gltf) { scene.add(gltf.scene); const model = gltf.scene; mixer = new THREE.AnimationMixer(model);
//load file
let mixer;
const loader = new THREE.GLTFLoader();
loader.load('js/simple.gltf', function (gltf) {
scene.add(gltf.scene);
const model = gltf.scene;
mixer = new THREE.AnimationMixer(model);
gltf.animations.forEach((clip) => {
mixer.clipAction(clip).play();
});
helper = new THREE.SkeletonHelper(model);
helper.material.linewidth = 3;
helper.visible = true;
scene.add(helper);
////GUI
guiControls = new function () {
this.Bone_0 = 0.0;
this.Bone_1 = 0.0;
}
datGUI = new dat.GUI();
//datGUI.add(guiControls, "scene");
var folder = datGUI.addFolder('Controls');
folder.add(guiControls, 'Bone_0', -3.14, 3.14);
folder.add(guiControls, 'Bone_0', -3.14, 3.14);
folder.add(guiControls, 'Bone_1', -3.14, 3.14);
folder.add(guiControls, 'Bone_1', -3.14, 3.14);
});
//RENDER LOOP
render();
function render() {
controls.update();
var delta = 0.75 * clock.getDelta();
if (mixer) {
mixer.update(delta);
}
scene.traverse(function (child) {
if (child instanceof THREE.SkinnedMesh) {
child.position.y += .01;
child.skeleton.bones[0].position.y = guiControls.Bone_0;
child.skeleton.bones[0].rotation.y = guiControls.Bone_0;
child.skeleton.bones[1].position.y = guiControls.Bone_1;
child.skeleton.bones[1].rotation.y = guiControls.Bone_1;
}
});
renderer.render(scene, camera);
requestAnimationFrame(render);
};
folder.add(GUI控件,'Bone_0_x',-3.14,3.14)代码>
var-datGUI=new-dat.GUI();
var folder=datGUI.addFolder('Controls');
var bones=skeleton.bones;
对于(变量i=0;i
var datGUI = new dat.GUI();
var folder = datGUI.addFolder('Controls');
var bones = skeleton.bones;
for ( var i = 0; i < bones.length; i++ ) {
folder.add( bones[i].position, 'x', 0, Math.PI * 2 ).name( 'bones[' + i + '].position.x' );
folder.add( bones[i].position, 'y', 0, Math.PI * 2 ).name( 'bones[' + i + '].position.y' );
// ...
}