带有物体材质的三维线框
threejs wireframe with the object materials
我想获得从OBJMTLLoder
加载的对象的线框,所以这里我有下面的代码
var loader = new THREE.OBJMTLLoader();
loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh )
{
child.geometry.computeFaceNormals();
var geometry = child.geometry;
console.log(geometry);
geometry.dynamic = true;
material = new THREE.MeshLambertMaterial();
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
var useWireFrame = true;
if (useWireFrame) {
mesh.traverse(function (child) {
if (child instanceof THREE.Mesh) child.material.wireframe = true;
});
}
}
object.position.y = - 80;
scene.add( object );
});
} );
这工作得很好,我可以看到我的对象上的线框,不幸的是,这里我的对象材料变成了MeshLambertMaterial
。但是我想用加载对象的默认材料获得对象的线框,我可以像在threejs文档中一样使用各种材料,但它们都没有给我一个默认对象材料
我通过add child修复了它。材料的材料,所以这是答案
loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh )
{
//child.geometry.computeFaceNormals();
var geometry = child.geometry;
//console.log(geometry);
//geometry.dynamic = true;
material = child.material;
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
var useWireFrame = true;
if (useWireFrame) {
mesh.traverse(function (child) {
if (child instanceof THREE.Mesh)
{
child.material.wireframe = true;
child.material.color = new THREE.Color( 0x6893DE );
}
});
}
}
object.position.y = - 80;
//scene.add( object );
});
这里我添加了material = child.material;
,就像geometry = child.geometry;
一样,它工作得很好
相关文章:
- 在threejs中使用纹理网格和线框网格
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 通过拖动可以更改三维模型对象在Three.js场景中的位置
- 在哪里可以找到可用的开源三维图表
- 如何在three.js中加载指定文件内容而非路径的三维模型
- 创建三维维度数组
- 三个JS框几何体,渲染警告:渲染计数或素数为0
- 如何绘制具有tween动画效果的三js线几何图形
- 如何用javascript创建三维数组我想把数据插入数组中,这有助于我的代码
- 使用三个js加载三维模型示例
- CSS三维旋转;不能在Chrome上使用列布局
- 方向感知三维立方体动画
- Three.js:将三维位置转换为二维屏幕位置
- JavaScript交互式三维对象
- 在线显示三维模型
- 在处理中围绕三维球体动态观察
- Chrome动画CSS3三维立方体与悬停状态问题
- 如何使用遍历三.js修改线框
- 带有物体材质的三维线框
- 针对BufferGeometry线三维的光线投射