【问题标题】:Three.js - Editing facesThree.js - 编辑面孔
【发布时间】:2016-03-27 02:29:23
【问题描述】:

我想我会在这里问这个问题,因为我在任何地方都找不到任何信息(SO 或 three.js 文档) - 如何获得特定面部的平均 x、y、z 坐标?或者至少,有没有办法获得构成面的三个顶点的 x,y,z 坐标?然后用这些来计算平均值?

目前为止

var fLength = plane.geometry.faces.length;
for (var i = 0; i < fLength; i++) {
    var f = plane.geometry.faces[i];
    //How do I get the x,y,z of the current/i face?
    //Is there a way to move this face? 
    //Is there a way to extrude this face? Or do -anything- with it for that matter?
}

此外,除了移动顶点之外,还有什么方法可以移动面吗?挤出面呢?我意识到这是很多问题,但是所有这些的过程对我来说似乎有点不清楚......

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    每个 Three.js Face3 包含属性 abc。这些是同一几何对象的顶点数组的索引。例如,使用

    v1 = plane.geometry.vertices[f.a];
    

    获取Vector3,代表人脸第一个顶点的位置。

    Three.js 没有提供太多方便的方法来修改现有对象的几何形状。与底层图形 API 一样,它的重点是快速组合和显示大部分是静态对象的场景(除了顶点着色器操作)。

    您必须手动调整构成面的各个顶点(并设置正确的脏标志),如果您的修改有效地修改了边,甚至重建面。根据您的用例,使用顶点着色器执行您的操作可能会更简单。

    关键是,构建和修改几何的主题很快就会变得很棘手。如果您需要任何帮助,请务必提出特定问题,概述您对几何图形的所需操作。

    【讨论】:

    • 非常感谢!我没有意识到three.js 主要用于静态对象-我想我假设您可以像在典型的3d 建模程序中那样修改几何图形。我还没有探索过three.js中的动画...我假设如果不从搅拌机或其他此类程序中导出几何图形,您将无法轻松制作几何图形?
    • 嗯,这取决于你所说的动画几何体的意思。如果您想要传统的基于关键帧/骨架的动画,3d 建模器将始终是您的首选工具(请参阅blog.romanliutikov.com/post/60461559240/…)。如果您想要程序动画,您可以通过修改顶点 (mrdoob.github.io/three.js/examples/webgl_geometry_dynamic.html) 和/或顶点着色器 (mrdoob.github.io/three.js/examples/#webgl_shaders_ocean2) 来做很多事情。最好的方法在很大程度上取决于你想做什么,确切地说。
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多