【发布时间】:2018-08-30 18:24:35
【问题描述】:
这三个小时以来,我一直在用这个来打击自己。 我的问题是,是否有人愿意以这样的方式重新组织我的示例,使我加载的对象带有颜色,任何颜色
var loader = new THREE.OBJLoader()
loader.load( 'learning/exported1.obj', function ( object )
{
object.traverse( function (child)
{
if ( child instanceof THREE.Mesh )
{
child.material.color.setHex( 0xffffff );
}
}
var OBJBoundingBox = new THREE.Box3().setFromObject(object);
OBJBoundingBox.center(object.position);
object.position.multiplyScalar(-1);
object.position.x = object.position.x;
object.position.y = object.position.y;
object.position.z = object.position.z;
scene.add( object );
}, onProgress, onError );
如果我将遍历部分扔掉,则对象已成功加载,但为简单的白色,使用它,对象不会出现在我的屏幕上...
<script src="../build/three.js"></script>
<script src="js/loaders/OBJLoader.js"></script>
<script src="js/controls/OrbitControls.js"></script>
<script src="js/shaders/CopyShader.js"></script>
<script src="js/shaders/SMAAShader.js"></script>
<script src="js/postprocessing/EffectComposer.js"></script>
<script src="js/postprocessing/SMAAPass.js"></script>
<script src="js/postprocessing/RenderPass.js"></script>
<script src="js/postprocessing/MaskPass.js"></script>
<script src="js/postprocessing/ShaderPass.js"></script>
<script src="js/libs/dat.gui.min.js"></script>
如果您认为问题出在此处,这些是我的导入
提前非常感谢,这是一个我正在独立开发的项目,如果我能让它工作,我会很高兴的!
【问题讨论】:
-
您是否正在执行所有这些后处理效果?也许他们正在洗掉你的颜色。您是否尝试过在场景中添加一个简单的 THREE.BoxGeometry() 以查看是否出现?可能是您的相机朝向错误的方向。也许您正在使用
.multiplyScalar(-1);... 将对象移出视线范围,这可能是数百种东西。你在看什么? -
嗨,是的,我将这些导入用于 AntiAlias 我的对象。当然,我可能不需要所有这些...问题是,当我删除代码的 object.traverse 部分时-因此其余代码以 var OBJBoundingBox 开头-我将对象很好地放置在我的屏幕中间但是是有光泽的白色。应用颜色的方式有问题,就像我加载背景的遍历功能一样,但没有加载对象……老实说,我在这里放弃了,我想知道为什么简单地分配材质这么难…… .object.material.color.set 有人吗? :P