# -*- coding: utf-8 -*-
'''
CSDN博客:https://blog.csdn.net/suiyingy
乐乐感知学堂公众号
长期分享三维、二维感知、大模型等AI算法和demo以及金融量化分析算法等。
本程序作用:open3d三维模型表面积计算
专栏地址:https://blog.csdn.net/suiyingy/category_12462636.html
'''
import numpy as np
import open3d as o3d
if __name__ == '__main__':
vertices = np.array([[0.0, 0.0, 1.0], [3.0, 0.0, 1.0], [0.0, 4.0, 1.0]])
faces = np.array([[1, 2, 3]])
faces = faces - 1 # 减1是因为索引从0开始
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 1: ', mesh.get_surface_area())
vertices = np.array([[0.0, 0.0, 0.0], [3.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 5.0], [3.0, 0.0, 5.0], [0.0, 4.0, 5.0]])
faces = np.array([[1, 3, 2], [2, 3, 5], [5, 3, 6], [1, 4, 3], [3, 4, 6], [1, 2, 4], [2, 5, 4], [4, 5, 6]])
faces = faces - 1 # 减1是因为索引从0开始
# 创建TriangleMesh对象
mesh = o3d.geometry.TriangleMesh()
# 设置顶点和面片
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 2: ', mesh.get_surface_area())
# 改变两个底面顶点顺序
faces = np.array([[1, 2, 3], [2, 3, 5], [5, 3, 6], [1, 4, 3], [3, 4, 6], [1, 2, 4], [2, 5, 4], [4, 6, 5]])
faces = faces - 1 # 减1是因为索引从0开始
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 3: ', mesh.get_surface_area())
# 改变两个底面和一个侧面顶点顺序
faces = np.array([[1, 2, 3], [3, 2, 5], [5, 3, 6], [1, 4, 3], [3, 4, 6], [1, 2, 4], [2, 5, 4], [4, 6, 5]])
faces = faces - 1 # 减1是因为索引从0开始
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 4: ', mesh.get_surface_area())
# 删掉一个底面
faces = np.array([[2, 3, 5], [5, 3, 6], [1, 4, 3], [3, 4, 6], [1, 2, 4], [2, 5, 4], [4, 5, 6]])
faces = faces - 1 # 减1是因为索引从0开始
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 5: ', mesh.get_surface_area())
# 再删掉一个底面
faces = np.array([[2, 3, 5], [5, 3, 6], [1, 4, 3], [3, 4, 6], [1, 2, 4], [2, 5, 4]])
faces = faces - 1 # 减1是因为索引从0开始
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(faces)
print('area result 6: ', mesh.get_surface_area())
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
程序中详细介绍博客专栏地址:https://blog.csdn.net/suiyingy/article/details/133971359。 01_area_trimesh.py:trimesh三维模型表面积计算。 02_area_open3d.py:open3d三维模型表面积计算。 slz1.obj、slz2.obj、slz3.obj、slz4.obj、slz5.obj:不同三棱柱obj三维模型文件。
资源推荐
资源详情
资源评论
收起资源包目录
04_area.rar (7个子文件)
04_area
slz4.obj 139B
slz3.obj 147B
02_area_open3d.py 3KB
slz5.obj 131B
slz2.obj 147B
01_area_trimesh.py 2KB
slz1.obj 147B
共 7 条
- 1
资源评论
Coding的叶子
- 粉丝: 4w+
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功