Three.js 只需将材质指定给loaded.OBJ-ThreeJS即可
三个小时以来我一直在用这个砸自己的头。。 我的问题是,是否有人能以这样的方式重新组织我的示例,使我加载的对象带有颜色,任何颜色Three.js 只需将材质指定给loaded.OBJ-ThreeJS即可,three.js,loader,.obj,Three.js,Loader,.obj,三个小时以来我一直在用这个砸自己的头。。 我的问题是,是否有人能以这样的方式重新组织我的示例,使我加载的对象带有颜色,任何颜色 var loader = new THREE.OBJLoader() loader.load( 'learning/exported1.obj', function ( object ) { object.traverse( func
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>
这些是我的进口品,以防你认为问题出在这里
提前非常感谢,这是一个我正在独立开发的项目,如果我能让它工作,我会喜欢它的 我觉得自己像个白痴,但我缺少的是
);
在object.traverse函数的末尾
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 );
}
});
// ^This over here^
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 );
分配材料现在可以完美地使用此代码。我觉得自己像个白痴,但我缺少的是
);
在object.traverse函数的末尾
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 );
}
});
// ^This over here^
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 );
指定材质现在可以很好地使用此代码。您是否执行了所有这些后处理效果?也许他们在洗掉你的颜色。您是否尝试过向场景中添加一个简单的THREE.BoxGeometry(),以查看是否出现了这种情况?可能是你的相机朝向错误的方向。可能您正在使用
.multilyscalar(-1)将对象移出视图代码>。。。可能有数百种。你看到了什么?嗨,是的,我用这些导入来反别名我的对象。当然,我可能不需要所有的。。。问题是,当我删除对象。遍历代码的一部分——这样代码的其余部分从VAR ObjultIdBox开始——我的对象在屏幕的中间位置很好,但是是一个光滑的白色。应用颜色的方式有问题,例如使用遍历函数加载背景,但不加载对象。。。我真的放弃了这里,我想知道为什么分配一个材料这么难。。。object.material.color.set有人吗?:你完成了所有这些后处理效果了吗?也许他们在洗掉你的颜色。您是否尝试过向场景中添加一个简单的THREE.BoxGeometry(),以查看是否出现了这种情况?可能是你的相机朝向错误的方向。可能您正在使用.multilyscalar(-1)将对象移出视图代码>。。。可能有数百种。你看到了什么?嗨,是的,我用这些导入来反别名我的对象。当然,我可能不需要所有的。。。问题是,当我删除对象。遍历代码的一部分——这样代码的其余部分从VAR ObjultIdBox开始——我的对象在屏幕的中间位置很好,但是是一个光滑的白色。应用颜色的方式有问题,例如使用遍历函数加载背景,但不加载对象。。。我真的放弃了这里,我想知道为什么分配一个材料这么难。。。object.material.color.set有人吗?:P