标签: mesh

在Matlab中读取.ply文件

如何读取网格文件(.ply)并在Matlab中显示?

另外,如何更改上述型号的相机视点?

谢谢

3d matlab visualization mesh matlab-cvst

5
推荐指数
1
解决办法
6308
查看次数

如何简化行进方格网格?

我正在iso平面上运行行进方块(相对于行进立方体)算法,然后将数据转换为三角形网格.

这可行,但会创建非常复杂的网格数据.我想将其简化为所需的最小三角形,如下图所示:

在此输入图像描述

我试过在轮廓周围循环(点 - >段 - >点 - > ...),但如果一个点有超过2个附加段,轮廓可能会反转.

理想情况下,解决方案应该相当快,以便可以在运行时完成.我使用的语言是C#,但可能从大多数其他类C语言中移植它.

c# opengl mesh triangulation marching-cubes

5
推荐指数
2
解决办法
4196
查看次数

半边缘结构上的多边斜角

我正在寻找半边数据结构上的多边斜角的示例实现或伪代码.单边斜角很容易 - 但是同时有多个边缘......我现在试了好几个小时都没有成功.我只是在拓扑变化中挣扎,正确地推动顶点看起来并不那么困难.基本上,我正在寻找一种关于如何在半边数据结构上从左网格到右网格的算法: 拓扑变化

任何人都可以指向一篇论文,一本书或多边斜角的示例实现吗?

algorithm 3d graph mesh computational-geometry

5
推荐指数
1
解决办法
340
查看次数

计算3D网格表面上两点之间最短路径的算法

我正在寻找一种算法来计算以下内容:

我有:

  1. 3D三角网格.三角形不一定位于一个平面中.两个相邻三角形的范数向量之间的角度小于90度.

  2. 两点.这两个点位于三角形网格的边缘或网格的三角形内.

我需要计算折线,它代表网格上两点之间的最短路径.

这样做最简单和/或最有效的策略是什么?

algorithm 3d graphics geometry mesh

5
推荐指数
1
解决办法
2194
查看次数

检测封闭三角形网格中的开口/孔?

我想检测(并关闭)封闭网格的开口和孔/挖空部分.我知道,对于一个开放的网格,这可以通过寻找边界边(仅属于一个三角形边)按照说明进行这儿.

但是封闭网格怎么样,这样的边界边缘不存在?下面是一个示例图像.盒子顶部有一个开口,圆筒有一个完整的孔.有没有算法来检测这些东西?

在此输入图像描述

algorithm geometry mesh

5
推荐指数
1
解决办法
299
查看次数

基于距离的顶点加点(网格几何)

我有一个THREE.Geometry在我的场景,其中包含超过5000个顶点。我想要做的是将包含几何体的网格的3个顶点添加THREE.Points到场景中。我想实现以下目标:

在此处输入图片说明

我将现有几何图形的第一个面的3个顶点添加到我的新几何图形的顶点中,该新几何图形应包含3个顶点。我用THREE.PointsTHREE.PointsMaterial,但我已经尝试了同样的事情THREE.LineSegments,并THREE.LineBasicMaterial和结果是一样的。(除了不是点,而是有线)。

var vertices = [
  mesh.geometry.faces[0].a,
  mesh.geometry.faces[0].b,
  mesh.geometry.faces[0].c
];


vertices.forEach( function(vId,i){
  vertices[i].index = i;
  vertices[i] = mesh.geometry.vertices[vId].clone();
  vertices[i].l2w = mesh.localToWorld(vertices[i].clone());
  vertices[i].id = vId;
  vertices[i].distance = vertices[i].l2w.distanceTo(camera.position);

})


var plane_geom = new THREE.Geometry();
plane_geom.vertices.push(vertices[0]);
plane_geom.vertices.push(vertices[1]);
plane_geom.vertices.push(vertices[2]);


plane_geom.verticesNeedUpdate = true;
plane_geom.elementsNeedUpdate = true;
plane_geom.computeVertexNormals();


var pointsMaterial2 = new THREE.PointsMaterial({
  size: 2,
  color: "red"
});

var plane_mesh =  new THREE.Points( plane_geom, pointsMaterial2 );
 scene.add( plane_mesh ); …
Run Code Online (Sandbox Code Playgroud)

javascript geometry mesh three.js

5
推荐指数
1
解决办法
155
查看次数

从顶点坐标创建三角形网格

给定一组带有坐标x和的二维数据点y(左图),是否有一种简单的方法可以在其上构造三角形网格(右图)?即返回一个元组列表,指示哪些顶点已连接。在此输入图像描述该解决方案并不唯一,但任何合理的网格就足够了。

geometry numpy mesh scipy

5
推荐指数
2
解决办法
3172
查看次数

Matplotlib 投影 3d 水平问题

我遇到了来自轮廓f()的非常奇怪的错误。我想为 3D 投影设置特定的最小值和最大值,但是当我尝试设置大于 -+max(Z) 的值时,我收到错误消息:

文件“C:\ Program Files \ Python38 \ lib \ site-packages \ mpl_toolkits \ mplot3d \ art3d.py”,第768行,在do_3d_projection zzs,segments_2d,self._facecolors2d,self._edgecolors2d,idxs =
ValueError:没有足够的值解压(预期为 5,实际为 0)

lmin,lmax = -1, 1 仅适用或更低的值

这是示例:

from pylab import *

mpName = 'seismic'

X = np.linspace(-np.pi, np.pi, 192)
Y = np.linspace(-np.pi, np.pi, 192)
X, Y = np.meshgrid(X, Y)
Z = np.sin(X*Y)


lmin,lmax = -2, 2 #
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contourf(Y, X, Z, cmap='RdBu', zdir='z', offset=np.pi, levels=np.linspace(lmin,lmax,20))
ax.set_xlim3d(-np.pi, np.pi)
ax.set_ylim3d(-np.pi, np.pi)
ax.set_zlim3d(-np.pi, np.pi) …
Run Code Online (Sandbox Code Playgroud)

python mesh matplotlib contourf

5
推荐指数
1
解决办法
370
查看次数

如何对不规则形状的晶格进行三角剖分?

我有一个 XYZ 点列表,它们排列在 XY 平面上均匀间隔的晶格中,如下所示(例如):

点排列成格子

我想用三角形“平铺”这些点之间的空间,将一个点连接到其直接(最多)八个邻居中的两个,如下所示:

与之前相同的点格,但现在用三角形平铺

我如何在 Python 中有效地完成此操作? 一种简单的方法会检查每个点是否有八个可能的三角形,但由于考虑了许多重复的三角形,这是非常低效的。考虑每个点右下角可能存在的三角形之类的事情,会错过一些三角形。这个问题有通用的算法吗?

我认为 Delaunay 三角剖分是不合适的,因为它总是会创建凸三角剖分。




语境

该三角测量是根据 LIDAR 高度数据生成建筑物 3D 网格过程中的一个步骤。当我使用“常用”算法从点云(泊松、旋转球)生成网格时,我最终得到的网格中有许多孔(尤其是在塔或墙等陡峭的斜坡上)。我希望通过认识到点云在 XY 平面上形成均匀间隔的晶格并从该角度对其进行三角测量(如上所述),我可以解决许多此类孔问题。

本地点云高度数据 从上方看到的当地教堂点云的一部分

python algorithm mesh triangulation

5
推荐指数
1
解决办法
249
查看次数

如何将 3D xyz 矢量几何投影到与三角表面的表面法线正交的平面上?右

我正在使用 OLS 求解方程,该方程返回 x/y/z 表面网格上的计时点。我可以按照下面概述的方法求解速度和方向性。问题是,我的矢量与表面网格不平行,并且我不确定使其朝正确方向所需的正确变换。

文献指出:

“为了在 3D 几何中实现矢量的可视化......如果在矢量计算中仅使用表面数据,则传导速度矢量会以几何方式投影到与表面法线正交的平面中。此约束修正了指向内部或内部的矢量。表面之外”

我不知道该怎么做。

代表数据:

library(plotly)
library(dplyr)
Run Code Online (Sandbox Code Playgroud)
tri_list <- list(surf_tri = structure(c(1L, 1L, 4L, 8L, 11L, 12L, 17L, 6L, 
19L, 13L, 3L, 5L, 22L, 1L, 26L, 18L, 18L, 8L, 21L, 14L, 27L, 
4L, 14L, 7L, 6L, 29L, 22L, 16L, 23L, 26L, 3L, 28L, 2L, 13L, 12L, 
31L, 33L, 35L, 32L, 28L, 33L, 31L, 20L, 9L, 36L, 12L, 29L, 20L, 
31L, 27L, 17L, 26L, 8L, 15L, 9L, 29L, 9L, 35L, 15L, 11L, 16L, 
16L, 38L, …
Run Code Online (Sandbox Code Playgroud)

r mesh vector-graphics triangulation

5
推荐指数
0
解决办法
241
查看次数