1

我已将 Collada 模型用于我的产品 3D 预览之一,其中画布作为纹理,通常它工作正常,但对于某些角度,3D 角落部分渲染不正确。

我附上了画布和 3D 模态的屏幕截图以及 DAE 模态。

模态有问题吗?请在此处找到 Collada 模型

在此处输入图像描述 在此处输入图像描述

请在下面找到我的代码:

width = 256, height = 256;
camera = new THREE.PerspectiveCamera( 1, width / height, 0.01, 300 );
camera.position.set( 8, 10, 8 );
camera.lookAt( 0, 3, 0 );
scene = new THREE.Scene();
scene.background = new THREE.Color( 0xffffff );
loadingManager = new THREE.LoadingManager( function () {
  scene.add(collada.scene ); // while loading collada model i am updating scene and assign new collada.scene to it
});

loader = new ColladaLoader( loadingManager );
ambientLight = new THREE.AmbientLight( 0xffffff, 1 );
scene.add( ambientLight );

spotLight = new THREE.SpotLight( 0xffffff, 1 );
spotLight.target = scene;
spotLight.position.set(0, 0, 0);
spotLight.castShadow = !0;
spotLight.shadow && spotLight.shadow.mapSize.set(width, height);

4

1 回答 1

1

您的 Collada 文件中存在问题,尽管它不一定对渲染工件负责。问题是以下部分:

<library_images>
  <image id="Map #3-image" name="Map #3"><init_from>file://D:\Mit\3D Box\57.15 x 57.15 x 152.4 overlay\57.15 x 57.15 x 152.4 Open\57.15 x 57.15 x 152.4 Front Open.png</init_from></image>
  <image id="Map #5-image" name="Map #5"><init_from>file://D:\Mit\3D Box\57.15 x 57.15 x 152.4 overlay\57.15 x 57.15 x 152.4 Open\57.15 x 57.15 x 152.4 Back Open.png</init_from></image>
  <image id="Map #6-image" name="Map #6"><init_from>file://D:\Mit\3D Box\57.15 x 57.15 x 152.4 overlay\57.15 x 57.15 x 152.4 Open\57.15 x 57.15 x 152.4 Border Open.png</init_from></image>
</library_images>

如您所见,它包含针对文件系统的绝对文件路径。如果您在浏览器中加载 Collada 资产,这些定义将不起作用。假设纹理位于同一目录中,它应该是:

<library_images>
  <image id="Map #3-image" name="Map #3"><init_from>57.15 x 57.15 x 152.4 Front Open.png</init_from></image>
  <image id="Map #5-image" name="Map #5"><init_from>57.15 x 57.15 x 152.4 Back Open.png</init_from></image>
  <image id="Map #6-image" name="Map #6"><init_from>57.15 x 57.15 x 152.4 Border Open.png</init_from></image>
</library_images>

在three.js 编辑器中导入模型时,模型本身的几何形状似乎很好。

于 2020-10-28T09:21:57.783 回答