利用open3d的python库来实现三维模型的纹理贴图渲染。

渲染原理类似OpenGL,需要指定顶点信息,三角网格顶点的索引,以及UV贴图坐标。

需要提前安装open3d库:

pip install open3d

实现代码如下:

import os
import cv2
import numpy as np
import open3d as o3dvert = [[0,0,0],[0,1,0],[1,1,0],[1,0,0],[0,0,1],[0,1,1],[1,1,1],[1,0,1]]faces = [[3, 0, 1], [1, 2, 3],[1, 5, 6], [6, 2, 1], [5, 4, 7], [7, 6, 5], [4, 0, 3], [3, 7, 4], [6, 7, 3], [3, 2, 6], [1, 0, 4], [4, 5, 1]]m=o3d.geometry.TriangleMesh(o3d.open3d.utility.Vector3dVector(vert),o3d.open3d.utility.Vector3iVector(faces))m.compute_vertex_normals()text=cv2.imread('./cupe_uv.png')DX,DY=0.5/2,0.66/2 # UV坐标one = [[3*DX,1*DY], [3*DX,2*DY], [4*DX,2*DY], [4*DX,2*DY], [4*DX,1*DY], [3*DX,1*DY]]
two = [[2*DX,1*DY], [2*DX,2*DY], [3*DX,2*DY], [3*DX,2*DY], [3*DX,1*DY], [2*DX,1*DY]]
three=[[1*DX,1*DY], [1*DX,2*DY], [2*DX,2*DY], [2*DX,2*DY], [2*DX,1*DY], [1*DX,1*DY]]
four= [[0*DX,1*DY], [0*DX,2*DY], [1*DX,2*DY], [1*DX,2*DY], [1*DX,1*DY], [0*DX,1*DY]]
five= [[1*DX,0*DY], [1*DX,1*DY], [2*DX,1*DY], [2*DX,1*DY], [2*DX,0*DY], [1*DX,0*DY]]
six = [[1*DX,2*DY], [1*DX,3*DY], [2*DX,3*DY], [2*DX,3*DY], [2*DX,2*DY], [1*DX,2*DY]]v_uv=np.concatenate((one,two,three,four,five,six),axis=0)
print(v_uv.shape) # (48, 2)m.triangle_uvs = o3d.open3d.utility.Vector2dVector(v_uv)
m.triangle_material_ids = o3d.utility.IntVector([0]*len(faces))
m.textures = [o3d.geometry.Image(text)]o3d.visualization.draw_geometries([m])

代码中使用到的纹理贴图cupe_uv.png下载网址:https://i.stack.imgur.com/QwIKM.png。

纹理贴图:

渲染效果是一个三维的骰子,拖动鼠标可以手动旋转:

参考:How to add texture to a mesh in python Open3d? - Stack Overflow

Python下Open3D实现纹理贴图渲染相关推荐

  1. windows下opengl多重纹理贴图

    参考:http://blog.sina.com.cn/s/blog_4a082449010138kt.html 转自:http://www.cnblogs.com/waytofall/archive/ ...

  2. OpenGL着色器程序解析--纹理贴图

    背景 纹理贴图意思是将任意类型的图片贴在3d模型的一个或者多个面上.图片可以是任意的但通常是一种通用的样式,比如:砖块.植物.荒芜的土地等等,可以提高场景的真实性.比较下面两幅图片:  为了实现纹理贴 ...

  3. 【Directx3D-4】渲染图片(纹理贴图方式)

    文章目录 纹理 纹理资源格式 Direct3D中的纹理 坐标系 视口 代码 离屏表面和纹理内存的比较 参考资料 图片渲染,在前文[DirectX3D - 2]渲染YUV图片(离屏表面方式)已经介绍过使 ...

  4. 实时渲染学习(四)纹理贴图及相关技术

    参考博文:[<Real-Time Rendering 3rd> 提炼总结](五) 第六章 · 纹理贴图及相关技术 概念导览: 纹理管线 The Texturing Pipeline 投影函 ...

  5. Android Studio OpenGL ES绘制三棱锥/四面体的多纹理贴图 每个面使用一张图片渲染

    本文参考了王刚的<疯狂Android讲义(第3版)>P554-P559 要求:利用OpenGL ES绘制一个三棱锥,并对每个面进行纹理贴图,每个面使用不同的图片进行渲染. 环境:Andro ...

  6. Mac下的plist纹理图切图工具(命令行)

    Mac下的plist纹理图切图工具(命令行) 经常用Mac,开发需要经常切拼好的plist纹理图,找了好久都没什么合适的软件:拼图的有不少(TexturePacker.PlistEditor等),拆图 ...

  7. Open3D 纹理贴图

    文章目录 一.简介 二.实现代码 三.实现效果 参考资料 一.简介 Open3D中的纹理贴图采用了OpenGL中的贴图机制(OpenGL学习笔记--纹理),通过为每一个面片指定相应的纹理坐标即可按照我 ...

  8. 使用Python,Open3D对点云散点投影到面上并可视化,使用3种方法计算面的法向量及与平均法向量的夹角

    使用Python,Open3D对点云散点投影到面上并可视化,使用3种方法计算面的法向量及与平均法向量的夹角 写这篇博客源于博友的提问,他坚定了我继续坚持学习的心,带给了我充实与快乐. 将介绍以下5部分 ...

  9. python画三维平面-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

最新文章

  1. SQL Server将数据导出SQL脚本的方法 转
  2. 竞赛 | 我们标注了34G真实线下门店数据,等你pick!
  3. php redis 主从配置,Redis主从及其PHP扩展安装配置
  4. let finger cross
  5. XCTF_Web_新手练习区:simple_php
  6. springboot点击运行没反应,什么都不显示的解决方式
  7. web前端基础(12js基础介绍)
  8. 大盘指数的定义及其计算方法
  9. 本题要求实现一个求整数的逆序数的简单函数。_回溯算法:求组合总和(二)...
  10. java 运行时异常 处理_如何在Java中处理运行时异常?
  11. net.java.html.BrwsrCtx
  12. Geodatabase
  13. OneHotEncoder简单用法
  14. 学习记录:自平衡莱洛三角形v1(原理,代码)学习记录(一)
  15. 一个QQ盗号木马是这样诞生的(C#)
  16. windows端口配置
  17. 搜狗输入法linux版 rpm,wps for linux 不能使用搜狗输入法
  18. 案牍写作中要留意的问题
  19. 微软服务器安装显卡驱动,微软虚拟机显卡及驱动的设置
  20. 深入理解Android系统多用户

热门文章

  1. 4024: Bloxorz
  2. 最小二乘法用于直线,多项式,圆,椭圆的拟合及程序实现
  3. 数据恢复精灵官方正式版
  4. python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和电影图片,分别保存到csv文件和文件夹中
  5. JAVA 面试背 通过_java面试题背不下来怎么办?java面试题总结
  6. week2·JS学习
  7. Java 中exists用法_SQL中EXISTS的用法
  8. 全面分析RHCE7(红帽认证工程师)考试题目之 ----SSH篇
  9. Flutter全局路由封装及路由栈维护
  10. NeoRS:新生儿静息态fMRI数据预处理流程