Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
three.js骨骼控制/可视化和骨骼动画 如何正确地可视化骨骼?我觉得我做对了,但不知怎么的,骨架没有显示出来 如何在单独的GUI控件中为GUI中的每个骨骼指定骨骼在x、y、z轴上的位置/旋转,例如“bone_0.x”而不是“bone_0”?现在每个“Bone_0”都在控制旋转和位置。。。或者有没有一种方法可以通过单击骨骼来控制骨骼,并使用关键点输入来平移/旋转,例如“g”+“x”在x轴上平移骨骼_Three.js - Fatal编程技术网

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);
    };
  • 模型中有错误,代码是正确的
  • 使用Bone_0_x指定轴,例如
    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' );
      // ...
    }