【发布时间】:2019-09-18 07:38:45
【问题描述】:
我只是想加载一个模型,其中包含从搅拌机到三个 js 的动画。所以我试图复制http://stemkoski.github.io/Three.js/Model-Animation.html
我下载了他的代码,他使用:
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "models/android-animations.js", addModelToScene );
// addModelToScene function is called back after model has loaded
var ambientLight = new THREE.AmbientLight(0x111111);
scene.add(ambientLight);
}
function addModelToScene( geometry, materials )
{
// for preparing animation
for (var i = 0; i < materials.length; i++)
materials[i].morphTargets = true;
var material = new THREE.MeshFaceMaterial( materials );
android = new THREE.Mesh( geometry, material );
android.scale.set(10,10,10);
scene.add( android );
}
我在节点 JS 中工作,但是当我这样做时出现错误 JSONLoader has been removed:
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "./src/scripts/elements/android-animations.js", this.addModelJson);
我尝试过 FBXLoader、ObjectLoader,一切都试过了。我可以加载模型,但不能加载带有动画的模型。这是唯一的解决方案吗?
如果 JSONLoader 不再存在,我如何从搅拌机加载带有动画的模型?
更新:
当我像这样使用 LegacyJSONLoader 时,this 未定义:
var jsonLoader = new THREE.LegacyJSONLoader();
jsonLoader.load( "./src/scripts/elements/android-animations.js", this.addModelJson);
addModelJson( geometry, materials, scene )
{
// for preparing animation
for (var i = 0; i < materials.length; i++)
materials[i].morphTargets = true;
var material = new THREE.MeshFaceMaterial( materials );
var android = new THREE.Mesh( geometry, material );
android.scale.set(10,10,10);
this.scene.add( android );
}
【问题讨论】:
-
你应该看到那个人在他的例子中使用了哪个版本的
three。我的猜测是这比你的要老(或更新)得多。另外,你的意思是new THREE.AmbientLight('0x111111'); -
@mwilson 如果我在更新版本并且我尝试过 fbx 动画混合器,你用什么来导入动画模型?
-
您应该在发帖前尝试搜索答案。我向你保证,
this is undefined的问题已经在 StackOverflow 上得到了数十次回答。这是搜索的第一个结果:stackoverflow.com/questions/20279484/…
标签: javascript html three.js