问题标签 [mesh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
math - 一个好的 3D 网格库
我正在寻找一个好的 3D Mesh 库
- 应该能够阅读流行的格式(OFF,OBJ ...)
- 应该同时支持半边结构和三角汤
- 应该容忍故障和非法网格。
- 基本几何运算 - 交点、法线计算等
- 最重要的是 - 不应该与无尽的模板和继承层次结构复杂化。
我已经尝试过 CGAL 和 OpenMesh,但在最后一点都失败了。
特别是 CGAL,即使使用最先进的代码分析工具也无法遵循。
到目前为止,我正在认真考虑自己动手。
我的偏好是 C++,但我对其他选项持开放态度。
algorithm - 阅读网格算法和网格库
我有兴趣阅读和理解 2D 网格算法。在 Google 上搜索会发现很多论文和资料来源,但大多数都过于学术,对初学者而言并不多。
那么,这里有人会推荐任何我可以从一开始就学习的阅读资源(适合初学者)或开源实现吗?谢谢。
此外,与三角形网格生成相比,我对四边形网格和混合网格(四边形和三边形组合)更感兴趣。
graphics - 从多边形网格中寻找唯一边的算法
我正在寻找一种好的算法,它可以从一组多边形数据中为我提供独特的边缘。在这种情况下,多边形由两个数组定义。一个数组是每个多边形的点数,另一个数组是顶点索引列表。
我有一个正在运行的版本,但是当达到超过 500,000 个多边形时性能会变慢。我的版本遍历每个面并将每个边的排序顶点添加到 stl::set。我的数据集将主要是三角形和四边形,并且大多数边将被共享。
有没有更聪明的算法呢?
graphics - 转换 Direct3D 网格
我试图写一个TransformMesh
函数。该函数接受一个Mesh
对象和一个Matrix
对象。这个想法是使用矩阵变换网格。为此,我锁定了顶点缓冲区,并在每个顶点上调用 Vector3::TransformCoordinate。它没有产生预期的结果。生成的网格无法识别。
我究竟做错了什么?
matlab - 如何绘制(半)对数 3d 图?(Matlab)
我知道用于 2D 绘图的 semilogx 和 semilogy。SURF 和 MESH 有什么等价物?
opengl - 经历垂直变形的多边形网格中的恒定水平带高度(OpenGL ES 1.1)
当使用通常的算法在标准多边形网格上实现纹理映射时,您可能会遇到与沿 y 轴的变形相关的问题,因为变形沿着四边形的恒定高度行的带而不是该方向上的顶点能够与沿 x 轴的拉伸相比独立拉伸。
我遇到了这个问题,因为在定义网格的顶点时,每一行都定义了一个底部和一个顶部顶点,导致一行的顶行顶点共享其上方行的底行顶点。
如果您只沿 x 或 z 轴变形网格,这是可以的,但如果您沿 y 轴变形网格而不考虑这一点,您会看到四边形的行一起作为一个带恒定高度而不是独立点的行。您将看到网格沿 y 轴发生变形,但您还会看到纹理撕裂,因为这些条带的宽度不会改变,从而导致网格中出现间隙。
有没有其他人遇到过这个问题,他们会对如何最好地将(x,y)置换贴图过滤器应用于以这种方式构建的多边形网格提出建议?或者定义网格的方法是否必须以某种基本方式改变?
可以在ZEUS OpenGL|ES Tutorial on Texture Mapping中查看网格生成算法的示例。
谢谢。
3d - 从 .PLY 文件将模型加载到半边数据结构中
我正在尝试构建一个 .PLY 解析器,以将存储为 .ply 文件的 3d 模型加载到半边数据结构网格中。
抱歉这个大问题,我很冗长,我想确保我列出了所有细节。正因为如此,我将立即重申我的最终目标,以便用户可以在阅读大量文本之前了解我想要什么。
1) 什么是从 .PLY 文件的顶点和面列表中记忆半边的好散列
或者
2) 有没有更好的方法从 .PLY 文件中的数据填充我的半边结构?
.PLY 文件列出了顶点,然后是网格的面。显而易见的解决方案是先填写顶点表,然后使用面列表生成边表。问题是每条边都有一个伙伴边,所以对于四边形网格,我加载的第一个四边形将需要 8 个半边。这最初不是问题,只需为面部创建四个半边并反转每个边以使其伙伴成为半边。这里的问题是,这会创建 4 个悬垂的半边,这些边与 4 个不同的面相关联。
所以有两种攻击方法:首先为人脸生成所有边,然后尝试配对伙伴边。我真的不喜欢这种方法,它似乎在编程上效率较低,因为它将涉及大量搜索和排序。
第二:按照第一个说明进行:从指定的第一个面开始并生成创建多边形所需的边,并在创建边时创建它们的双胞胎。但是,我们将记住边列表,因此所有边都将散列到一个表中。然后,当我们为其他面生成边时,如果已经生成了一条边(因为它是先前加载的面的伙伴边),我们将简单地将指针从表格中取出。
这就是我卡住的地方。我需要一个智能散列函数来记忆我的边缘列表。需要尽量减少碰撞以提高效率。我现在想到的方案是根据创建它们的两个顶点命名*边,IE 边 01 和 10 是双胞胎。最坏的情况会创建一个哈希表,其中所有顶点都可能被连接,最终大小为 2^n,其中 n = 顶点数,这是完全不可接受的。我的目标是使哈希值接近实际边数(= 每个面的边数之和),同时仍尽量减少碰撞。
*注意:因为半边执行“仅逆时针”绘制方案,所以不可能发生名称冲突。通过基于绘制它们的两个顶点命名边,我们确保所有名称对于单个半边都是唯一的。
apache-flex - Flash 网格补间/动画
有没有办法在 Flash 创作工具中正确补间/动画网格?
补间形状不识别特定顶点的移动,不保留连接并且通常会搞砸。对于任何重要的网格来说,形状提示都太少了,而且无论如何都要耗费太多的体力劳动。
我正在尝试在两个网格形状之间完成平滑动画,但保留了所有点和顶点,并且没有添加新的点/顶点。
有问题的网格是严格的 2D 的,但我不介意该解决方案是否需要 Actionscript/Papervision3D 协助,尽管关键帧网格状态的创作需要在 Flash 创作工具中以交互方式完成(过于复杂的形状/运动无法手动编码)。
想法?
c++ - 用于 C/C++ 的轻量级 OBJ 网格文件加载器?
我正在寻找用于 C 或 C++ 的简单轻量级 Wavefront OBJ 网格文件阅读器。(即,给定一个 OBJ 格式的网格,从文件中读取它,并使其可访问,最好是作为顶点和三角形的列表。)推荐?
它不需要支持材料属性或任何其他可能存在的奇特数据——只要几何形状就可以了。