将google sketchup对象导入threejs - 未渲染的纹理

时间:2013-08-05 17:20:29

标签: three.js collada sketchup

我正在为浏览器创建一个光盘高尔夫游戏。我的一个朋友通过在Trimble Sketchup中创建对象来帮助我,这样我就可以将它们导入到游戏中。他导出了.dae文件和纹理,我使用ColladaLoader.js导入它们。纹理和对象加载,对象被渲染,但对象是黑色的,有时,javascript控制台说某些纹理无法渲染。

以下是一些代码:

   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 );
   } );

我还需要做什么?我很乐意提供更多信息。

1 个答案:

答案 0 :(得分:2)

如果没有更多信息,这是一个非常谨慎的工作,但我先检查三件事:

  • 确保纹理路径正确(检查Firebug Net面板或其类似于尝试加载纹理的路径)。您可能需要搜索&替换DAE中的纹理路径,如果我没记错的话,SU有时会把绝对路径放在那里。

  • 你现场有灯吗?如果我没记错的话,ColladaLoader将SU DAE材质转换为MeshPhongMaterial,与MeshBasicMaterial不同,它需要一些灯光显示。

  • 你有一个动画循环,以便不断渲染这个东西吗?如果不是这样,请确保不仅在加载模型后重新渲染场景,而且在加载纹理之后(它们在模型之后延迟加载)。

  • 确保将纹理文件的大小调整为二维幂(256x512,256x256,1024x1024等)。 WebGL不喜欢任意大小的纹理。