如何在ThreeJs中加载引用的COLLADA文件
How to load referenced COLLADA files in ThreeJs
我想从导出加载collada文件。导出文件的方式是,"基础"文件引用具有实际几何体的另一个collada文件。
基本文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<COLLADA version="1.5.0" xmlns="http://www.collada.org/2008/03/COLLADASchema">
<asset>
<contributor>
<author>ACME</author>
</contributor>
<created>2016-04-27T14:53:24</created>
<modified>2016-04-27T14:53:24</modified>
<unit meter="0.001" name="mm" />
<up_axis>Z_UP</up_axis>
</asset>
<library_visual_scenes id="libvisualscenes">
<visual_scene id="libvisualscenes.scene">
<node id="38760" name="Part1_CATPart">
<matrix>-1.000000 0.000000 0.000000 -399.679153 0.000000 0.000000 -1.000000 671.000000 0.000000 -1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix>
<instance_node url="Part1_CATPart_799.dae#acme_frame_self_origin" />
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#libvisualscenes.scene" />
</scene>
</COLLADA>
Part1_CATPart在上面的拼贴画中被引用。我尝试了天真的方法,并使用ColladaLoader2.js加载了这个collada,但这导致了错误ColladaLoader2.js:175 Uncaught TypeError: Cannot read property 'build' of undefined
。直接加载Part1_CATPart即可。但是,这种方式不考虑基本文件的矩阵。
有没有一种方法可以让threejs`colladaLoader2获取引用的文件?
我相信url是在解析方法的第2326行解析的。通常url指向另一个节点。你可以在if子句中获得url,如下所示:
if ( iNode )
this.nodes.push( ( new Node() ).parse( iNode )) ;
}else{
url = url.split("#")[0]
console.log(url);
}
然后可以使用url
加载子模型,并在onload
回调中将其添加到场景中:
var loader = new THREE.ColladaLoader();
var result = loader.load(url);
var scene = result.scene;
var name, model, children = scene.children;
var onLoad = function( result ){
// process the result of each child model and add to parent scene
};
var onProgress = function(){};
loader.load( url, onLoad, onProgress );
这是演示的小提琴
fiddle只输出url。装载是否正确,由您决定。
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 在动态创建的元素上获取对特定选择器的引用
- IIFE中的函数引用不可用
- 如何通过引用var Using DataTables来进行分页或排序
- 如何在创建键时引用来自同一对象的键
- Datatables:通过DOM数据源中的名称引用列
- 自引用回调
- 引用类变量中的原型方法
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Vanilla JS通过引用移除数组元素
- 通过引用传递JavaScript对象
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- "“;变量未引用正确的对象
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- 引用vue.js中v-for中的上一个值
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- 如何在ThreeJs中加载引用的COLLADA文件