使用simple_3dviz进行三维模型投影

这篇具有很好参考价值的文章主要介绍了使用simple_3dviz进行三维模型投影。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。

更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。
本文章来自于专栏《Python三维模型处理基础》的系列文章,专栏地址为:https://blog.csdn.net/suiyingy/category_12462636.html。        文章来源地址https://www.toymoban.com/news/detail-740263.html

        上一篇博文《三维模型相机视角投影详细介绍及python程序解析》详细介绍了三维投影原理、相机位姿设置及其pyrender投影实现,地址为“https://blog.csdn.net/suiyingy/article/details/134043042”。本节介绍另一种基于simple_3dviz的实现方式。

        在计算机图形学中,三维模型投影是指将三维空间中的对象投影到二维平面上,以便于显示和分析。在本文中,我们将以俯视图和左视图为例,介绍如何使用simple_3dviz库进行三维模型投影。

        simple_3dviz是一个基于Python的简单三维可视化工具库,它提供了一些方便的函数和类,用于创建和显示三维场景,并对三维模型进行投影和渲染。我们将使用trimesh库加载三维模型,并将其转换为simple_3dviz的Mesh对象进行投影。

1 操作步骤

        (1)导入所需的库

        首先,我们需要导入一些必要的库,包括os、cv2、trimesh、numpy等。这些库将用于文件处理、图像处理和三维模型操作。我们需要安装所需的库,包括trimesh和simple_3dviz。可以使用pip命令进行安装:

pip install trimesh simple_3dviz opencv-python

        (2)trimesh转simple_3dviz

        在simple_3dviz中,模型文件需要具有材质色彩信息。然而,示例模型obj文件通常没有该信息。因此,我们需要使用trimesh库将模型文件读取为trimesh的mesh对象。为此,我们可以使用trimesh_to_simple_3dviz函数将顶点、网格和颜色信息提取并转换为simple_3dviz的Mesh对象。

        (3)俯视图

        在生成俯视图之前,我们需要确定窗口尺寸、图片背景、相机位置和观察目标位置等参数。然后,我们可以使用simple_3dviz的render函数生成俯视图,并将结果保存为图片文件。最后,我们可以使用cv2库读取图片文件并显示俯视图。

        (4)左视图

        生成左视图的步骤与俯视图类似,只需调整相机位置和观察目标位置等参数即可。通过简单地修改这些参数,我们可以轻松地生成不同角度的视图。

2 程序示例

        我们将给出使用simple_3dviz进行三维模型投影的完整代码示例。详细Python示例程序下载地址为“https://download.csdn.net/download/suiyingy/88489340”,或者在“乐乐感知学堂”內回复“3d处理基础”即可。程序文件夹为“06_mesh_project_simple_3dviz”。

# -*- coding: utf-8 -*-
'''
以俯视图和左视图为例,使用simple_3dviz进行三维模型投影
'''
import os
import cv2
import trimesh
import numpy as np
from simple_3dviz.window import show
from simple_3dviz import Scene, Mesh
from simple_3dviz.utils import render
from simple_3dviz.behaviours.io import SaveFrames
from simple_3dviz.renderables.textured_mesh import Material, TexturedMesh, read_mesh_file

# trimesh转simple_3dviz
# 由于simple_3dviz的模型文件需要有材质色彩信息,但示例模型obj没有该信息。
# 采用read_mesh_file读取没有材质信息的模型文件会报错。
# 因此这里先使用trimesh读取,然后转成simple_3dviz的mesh
def trimesh_to_simple_3dviz(mesh):
    # 省略函数实现细节...

# 俯视图
def show_top_view(mesh):
    # 省略函数实现细节...

# 左视图
def show_left_view(mesh):
    # 省略函数实现细节...

if __name__ == '__main__':
    # 加载三维模型
    mesh = trimesh.load('model.obj', force='mesh')
    # 俯视图
    show_top_view(mesh)
    # 左视图
    show_left_view(mesh)

3 投影效果

        示例模型的俯视图和左视图分别如下所示。由于程序采用trimesh读取模型并转换为simple_3dviz的mesh对象,并且材质颜色只使用了顶点颜色。因而,整体成像色彩与模型实际色彩有所差异。更好的成像效果请参考上一节pyrender实现《三维模型相机视角投影详细介绍及python程序解析》,地址为“https://blog.csdn.net/suiyingy/article/details/134043042”。simple_3dviz更适合于有材质信息的模型。

使用simple_3dviz进行三维模型投影,Python三维模型处理基础,3d,三维模型,投影,python,simple_3dviz

图1 示例模型俯视图

使用simple_3dviz进行三维模型投影,Python三维模型处理基础,3d,三维模型,投影,python,simple_3dviz

图2 示例模型左视图

4 总结

        在本文中,我们详细介绍了如何使用simple_3dviz库进行三维模型的俯视图和左视图投影。通过简单的步骤和代码示例,我们可以轻松地生成不同角度的三维模型投影,并将结果保存为图片文件。使用simple_3dviz库可以帮助我们更好地理解和展示三维模型,对于计算机图形学和计算机视觉等领域的研究和应用具有重要意义。

5 参考文献

        simple_3dviz库官方文档:https://simple-3dviz.readthedocs.io/en/latest/

        trimesh库官方文档:https://trimsh.org/

        注:本文中的代码示例基于Python编程语言,使用了一些第三方库。在运行代码之前,请确保已安装这些库,并且将模型文件(如'model.obj')放置在正确的路径下。

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。

更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。
本文章来自于专栏《Python三维模型处理基础》的系列文章,专栏地址为:https://blog.csdn.net/suiyingy/category_12462636.html。        

到了这里,关于使用simple_3dviz进行三维模型投影的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三维形体投影面积

    🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,

    2024年02月10日
    浏览(44)
  • 三维重建之条纹投影结构光(一)

            该系列为条纹投影结构光学习笔记,一共分为四篇。 第一篇记录文献阅读的笔记,对重要知识点进行摘录介绍;第二篇为相位求解和相位展开;第三篇为相高模型的标定;第四篇为重构篇。         本篇以理论知识为主,主要从以下三个方面进行介绍,首先介

    2024年02月02日
    浏览(48)
  • 三维变换矩阵实战——三维点云的旋转、缩放、镜像、错切、平移、正交投影

    旋转矩阵:右边矩阵是点云的原始坐标,左边的是旋转矩阵     可视化:绕x轴旋转90度 代码: 旋转矩阵:    可视化:绕y轴旋转180度 代码: 旋转矩阵:    可视化:绕z轴旋转90度 代码: 旋转矩阵:  线绕哪个轴转,xyz矩阵就和哪和轴的旋转矩阵先计算      可视化:先

    2024年02月04日
    浏览(93)
  • osgEarth改变投影方式(2D/3D互转),实现二三维数据同步

    想通过osgViewer::CompositeViewer添加同一个.earth文件实现两个View一边显示二维一边显示三维,并且加载的shp之类的数据完全同步。 osgEarth有两种方式构建MapNode,一是通过.earth文件,二是通过代码。 通过代码方式示例如下(官方例子Example osgearth_minimap):  通过.earth文件示例如下

    2024年03月11日
    浏览(41)
  • 【计算机图形学】三维图形投影和消隐(三视图构造)

    模块4-1 三维图形投影和消隐 一 实验目的 编写三维图形各种变换的投影算法 二 实验内容 1 :自行选择三维物体(不能选长方体),建立坐标系,给定点的三维坐标值,建立边表结构。完成三视图。 实验结果如下图所示: 左上显示为主视图,右上显示为侧视图,右下显示为

    2024年02月01日
    浏览(92)
  • 三维重建之条纹投影结构光(二)——四步相移+三频外差法

            接上文:         针对上文思路进行验证,本篇博客主要对相位进行求解,首先,对上面博客的理论进行复述,然后包括相位主值的计算和相位展开。          通过一帧变形条纹 图样是很难得到高精度的相位Φ(x,y),需要采用相移算法来准确测定相位。

    2024年02月08日
    浏览(104)
  • python使用onnx模型进行推理

    我们可以看到基于YoloV7训练的cfg有两种yaml文件,一个是training文件夹,一个是deploy文件夹,这两种文件夹有啥不一样呢??? 大家可以看下下面别人的issuse,,记住这个很关键,就是你选择哪个yaml训练对你后面导出的onnx是很关键的,后面我们会说到。 1、training中的yaml文件

    2024年02月12日
    浏览(52)
  • Python的opencv库进行三维重建

    在Python的OpenCV库中,可以使用相机标定和立体匹配算法来进行三维重建。以下是一个简单的示例代码,用于对一对立体图像进行三维重建:

    2024年02月06日
    浏览(48)
  • 基于条纹投影的物体三维形貌测量理论与仿真实验-含Matlab代码

    基于光栅投影的光学三维面形测量具有非接触、精度高、速度快、低成本、全场测量和易于实现等特点,在逆向工程、工业检测、质量控制、虚拟现实、医学诊断、文物修复和物体识别等领域应用广泛。相移轮廓术(PSM)和傅里叶变换轮廓术(FTP)是两种传统方法。相移法计算简单

    2024年02月03日
    浏览(158)
  • Python:如何对FY3D TSHS的数据集进行重投影并输出为TIFF文件以及批量镶嵌插值?

    完整代码见 Github: https://github.com/ChaoQiezi/read_fy3d_tshs ,由于代码中注释较为详细,因此博客中部分操作一笔带过。 FY3D TSHS 数据集是二级产品(TSHS即MWTS/MWHS 融合大气温湿度廓线/稳定度指数/位势高度产品); 文件格式为 HDF5 ; 空间分辨率为 33KM(星下点) ; 范围为全球区域;

    2024年04月14日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包