Three.js 将google sketchup对象导入到threejs中--未渲染纹理
我正在为浏览器创建一个光盘高尔夫游戏。我的一个朋友正在帮助我在Trimble Sketchup中创建对象,这样我就可以将它们导入到游戏中。他导出了一个.dae文件和纹理,我使用ColladaLoader.js导入了它们。加载纹理和对象,并渲染对象,但对象是黑色的,有时javascript控制台会说某些纹理无法渲染 下面是一些代码:Three.js 将google sketchup对象导入到threejs中--未渲染纹理,three.js,collada,sketchup,Three.js,Collada,Sketchup,我正在为浏览器创建一个光盘高尔夫游戏。我的一个朋友正在帮助我在Trimble Sketchup中创建对象,这样我就可以将它们导入到游戏中。他导出了一个.dae文件和纹理,我使用ColladaLoader.js导入了它们。加载纹理和对象,并渲染对象,但对象是黑色的,有时javascript控制台会说某些纹理无法渲染 下面是一些代码: var loader = new THREE.ColladaLoader(); var dae; loader.options.convertUpA
var loader = new THREE.ColladaLoader();
var dae;
loader.options.convertUpAxis = true;
loader.load( '/discgolf/static/models/BelmontDreamCourse.dae', function ( collada ) {
dae = collada.scene;
dae.scale.x = dae.scale.y = dae.scale.z = 2.0;
dae.position.set( 5, 5, 5 );
scene.add( dae );
} );
我还需要做什么?我很乐意提供更多信息。如果没有更多信息,这是一项相当艰巨的工作,但我首先要检查三件事:
- 确保纹理路径正确(检查Firebug Net panel或它尝试加载纹理的路径)。如果我没记错的话,您可能需要搜索并替换DAE中的纹理路径,SU有时可以将绝对路径放在那里
- 场景中有灯光吗?如果我没记错的话,ColladaLoader会将SU DAE材质转换为MeshPhongMaterial,这确实需要一些灯光来显示,而不像MeshBasicMaterial
- 是否有动画循环,以便不断渲染对象?如果不是这样,请确保不仅在加载模型后重新渲染场景,而且在加载纹理后也重新渲染场景(纹理在模型后延迟加载)
- 确保将纹理文件的大小调整为两个维度的幂次(256x512、256x2561024x1024x1024等)。WebGL不喜欢任意大小的纹理