【发布时间】:2015-03-07 15:12:16
【问题描述】:
我试图理解 Three.js 中的这个例子:http://threejs.org/examples/#webgl_animation_skinning_blending。我对这部分代码(BlendCharacter.js 文件)有一些问题。
this.load = function ( url, onLoad ) {
var scope = this;
var loader = new THREE.JSONLoader();
loader.load( url, function( geometry, materials ) {
var originalMaterial = materials[ 0 ];
originalMaterial.skinning = true;
THREE.SkinnedMesh.call( scope, geometry, originalMaterial ); // QUESTION (2)
// Create the animations
for ( var i = 0; i < geometry.animations.length; ++i ) {
var animName = geometry.animations[ i ].name; // QUESTION (1)
scope.animations[ animName ] = new THREE.Animation( scope, geometry.animations[ i ] );
}
(...)
} );
};
我有两个问题:
(Main) 3D 对象(Three.js 格式)如何已经有了带名称的动画?在 for 循环中,
"geometry.animation[i].name"是"walk", "idle" and "run"。我用 maya 和 blender(初级)制作了动画,但我不知道如何在同一个网格上导出多个动画,以及如何命名它们。(Less) 这是 JavaScript 语法的问题。为什么
"var scope = this;"?我试图在"THREE.SkinnedMesh.call(scope, geometry, originalMaterial);"中将"scope"替换为"this",但这使它不再有效。
感谢您阅读我的问题!
PS : 对不起我的英语...
【问题讨论】:
-
您的(较少)问题在 SO 中得到了多次回答。例如这里:stackoverflow.com/questions/4886632/… 和这里:stackoverflow.com/questions/5355041/…。您应该阅读 javascript 中的作用域。
-
@Bob Woodley 谢谢你回答我。
-
还有@Michael Zucchetta 纠正我的英语:)
标签: javascript 3d three.js blender maya