首页 > 解决方案 > 为什么这个 Threejs 克隆组通过 GLTFLoader 加载不当?

问题描述

所以我试图从 Three.js 示例中克隆士兵模型,因为我以后想要不止一个: https ://threejs.org/examples/webgl_animation_skinning_blending.html

我将第 93 行更改为:

            const loader = new GLTFLoader();
            loader.load( 'https://threejs.org/examples/models/gltf/Soldier.glb', function ( gltf ) {

                model = gltf.scene.clone();
                scene.add( model );

                model.traverse( function ( object ) {

                    if ( object.isMesh ) object.castShadow = true;

                } );

但现在士兵是巨大的。

在此处输入图像描述

为什么会发生这种情况,是否有解决方法?

这是一个显示问题的jsfiddle:

https://jsfiddle.net/paranoidray/jLpzk374/22/

如果您查看 jsfiddle 并更改第 93 行并删除 clone() 调用。一切都恢复正常...

任何帮助将不胜感激。

标签: three.js

解决方案


gltf.scene请像这样克隆:

model = SkeletonUtils.clone( gltf.scene );

核心尚不支持克隆蒙皮网格。但是,您可以使用它SkeletonUtils.clone()来执行此任务。

https://jsfiddle.net/yesxrq7g/


推荐阅读