【问题标题】:Three.js + imported model : how to display edge lines?Three.js + 导入模型:如何显示边缘线?
【发布时间】:2013-04-30 02:50:55
【问题描述】:

我通过 convert_obj_three.py 加载从 3DSMAX 导出的 .js 模型,并使用对象“纯色”显示它。

loader.load( 'try.js', function ( geometry, materials )
{
    var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial(materials));
    scene.add( mesh );
});

渲染模式是基本的和描述性的(本示例中没有材料)。现在我正在尝试添加边缘(“隐藏线”模式)以获得this kind of render (image from 3DSMAX)

目的是为 MeshFaceMaterial 添加彩色边缘(线条颜色将是与面相同的对象“纯色”)。

我注意到我们可以附加材料 (like in this stemkoski example) 但无法使用我的材料 json 执行此操作,您将如何做到这一点?

【问题讨论】:

    标签: javascript three.js webgl


    【解决方案1】:

    如果您的几何图形是 instanceof THREE.Geometry 而不是 instanceof THREE.BufferGeometry(未为 BufferGeometry 实现线框),那么您可以通过将这条线添加到场景中来实现您想要的效果(除了您拥有的那条线之外):

    scene.add (new THREE.Mesh (geometry,
        new THREE.MeshBasicMaterial ({ color: 0x00ffff, wireframe: true })));
    

    【讨论】:

    • 感谢它的工作原理,我想我可以遍历材料 json 以获得每个对象的颜色.. 但是我有 2 条评论:1- 线框将多边形几何体分成 3 或 4 个面(即使它是平面) 如您所见on this image。这是线框的正常行为吗? 2-这条新线也在复制几何体,所以在重型模型的情况下,没有办法像我链接的例子一样只附加新材料?
    • n 边多边形几何图形始终转换为三角形或 4 边多边形。它与线框模式无关。
    • 是的,我的意思是在 3D 建模器中不显示共面面之间的边。我想这种显示模式没有实现(有害)。非常感谢您的回答。
    • 很抱歉回来,但这只是为了澄清这一点:.OBJ 几何可以定义为多边形,但它们在 three.js (in this image I've made a test with polygonal export from 3DSMAX) 中没有正确呈现。我们是否必须将其视为正常限制或问题?在第一种情况下,您认为我可以请求一个新的“隐藏线”(在 3D 建模器中称为)渲染模式,它不会显示共面面之间的边缘吗?
    • 现在在 2015 年第二季度,您可以考虑使用来自 MrDoob 的 EdgesHelper threejs.org/docs/#Reference/Extras.Helpers/EdgesHelper
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 2017-07-16
    • 2013-02-11
    • 2017-03-09
    相关资源
    最近更新 更多