美文网首页
Venus: ThreeJS FBXLoader

Venus: ThreeJS FBXLoader

作者: dranker | 来源:发表于2018-04-22 17:08 被阅读0次

    01.关于3D文件格式的选择

    threejs提供了很多格式的 Loader
    但是却只提供了 obj 格式的使用文档, 而 obj 格式是不能存储骨骼信息的
    json格式的使用较为方便,网上例子很多,但是3Dmax要插件才能导出
    最后敲定用FBX, 通过看官网的example来了解FBXLoader的使用
    FBXLoader example

    02. FBXLoader的使用例子

    var loader = new THREE.FBXLoader();
    
            loader.load(
    
                './model/current.FBX',
    
                function( object ) {
                    
                    object.traverse( function( child ) {
    
                            console.log( child );
    
                            try {
    
                                if ( child instanceof THREE.SkinnedMesh ) {
    
                                    child.material.wireframe = true;
                                    
                                }
                                // console.log( child );
    
                                if( child instanceof THREE.Bone ) {
                                        if( 
                                            child.name == 'left' || child.name == 'right' || 
                                            child.name == 'Bone001' || child.name == 'Bone002' || child.name == 'Bone003'
                                        ) {
    
                                        } else {
                                            folder = gui.addFolder( child.name )
                                            folder.add( child.rotation, 'x', - Math.PI, Math.PI );
                                            folder.add( child.rotation, 'y', - Math.PI, Math.PI );
                                            folder.add( child.rotation, 'z', - Math.PI, Math.PI );
                                        }
                                }
    
                            }
    
                            catch( e ) {
    
                                console.log( e );
    
                            }
    
                    } );
    

    这其中最重要的一段代码就是

    object.traverse( function() { ... } );
    traverse是一个迭代器,它会将组成模型的部件一个一个提取出来, 通过控制台查看console.log()输出的信息就能明白这一点

    输出信息.PNG

    看type那一项: SkinnedMesh, Bone, Bone, Bone ...
    每个组成部分都有很多属性, 最有用的是: name, type
    通过 child.name 这样的形式来访问属性

    相关文章

      网友评论

          本文标题:Venus: ThreeJS FBXLoader

          本文链接:https://www.haomeiwen.com/subject/ncsclftx.html