赞
踩
参考文献:Creating Cameras — pyrender 0.1.45 documentation
渲染点
- import pyrender
- import trimesh
- import numpy as np
- from scipy.io import loadmat
-
-
- unwrap_info_path = '/speed/speed/code/FFHQ-UV/topo_assets/unwrap_1024_info.mat'
- unwrap_info = loadmat(unwrap_info_path)
-
-
- mesh_path = '/speed/speed/code/FFHQ-UV/examples/fitting_examples/outputs/face08_sad/stage2_mesh_exp.obj'
- mesh = trimesh.load(mesh_path)
- # 转换网格为点云
- points = mesh.vertices
-
- # 创建一个全为白色的颜色数组
- colors = np.ones((len(points), 4)) * [0,0,0,1]
- # colors = np.random.uniform(size=mesh.vertices.shape)
- # colors = (colors * 256).astype(np.uint8)
- # 设置高亮顶点为红色
- # red_vert_idx = [1, 5, 10]
- # colors[red_vert_idx] = [1,0,0,1]
- colors[0:1000] = [255,0,0,1]
- # points[0:1000,0] = points[0:1000,0] + 0.5
- # 用pyrender.Mesh.from_points()函数创建一个带有顶点颜色的网格
- mesh = pyrender.Mesh.from_points(points, colors=colors)
-
- # 创建一个场景并添加网格
- scene = pyrender.Scene()
- scene.add(mesh)
-
- # 创建一个透视相机
- pc = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.414)
- # 创建一个正交相机
- oc = pyrender.OrthographicCamera(xmag=1.0, ymag=1.0)
- # 创建一个相机节点
- camera_node = pyrender.Node(camera=oc)
- # 把相机节点添加到场景中
- scene.add_node(camera_node)
- # 创建一个变换矩阵,用于设置相机的位置和方向
- # 这里我们把相机移动到(0, 0, 1)的位置,你可以根据你的需要修改这些值
- camera_pose = np.eye(4)
- camera_pose[:3, 3] = [0, 0, 3]
- # 设置相机的位置和方向
- scene.set_pose(camera_node, pose=camera_pose)
-
- light = pyrender.DirectionalLight(color=[1.0, 1.0, 1.0], intensity=500.0)
- light_pose = np.eye(4)
- light_pose[:3, 3] = [1, 1, 1]
- scene.add(light, pose=light_pose)
-
- # 用pyrender.Viewer()函数来可视化网格
- viewer = pyrender.Viewer(scene, use_raymond_lighting=True)
- viewer.render_lock = True
- viewer.run()
渲染mesh
- import pyrender
- import trimesh
- import numpy as np
-
- mesh_path = '*/stage2_mesh_exp.obj'
- tm = trimesh.load(mesh_path)
- # 创建一个红色的材质,RGBA值为[1, 0, 0, 1]
- material = pyrender.MetallicRoughnessMaterial(baseColorFactor=[0, 1, 0, 1])
- m = pyrender.Mesh.from_trimesh(tm, material=material)
-
- # 创建一个场景并添加网格
- scene = pyrender.Scene()
- scene.add(m)
-
- # 创建一个透视相机
- pc = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.414)
- # 创建一个正交相机
- oc = pyrender.OrthographicCamera(xmag=1.0, ymag=1.0)
- # 创建一个相机节点
- camera_node = pyrender.Node(camera=oc)
- # 把相机节点添加到场景中
- scene.add_node(camera_node)
- # 创建一个变换矩阵,用于设置相机的位置和方向
- # 这里我们把相机移动到(0, 0, 1)的位置,你可以根据你的需要修改这些值
- camera_pose = np.eye(4)
- camera_pose[:3, 3] = [0, 0, 3]
- # 设置相机的位置和方向
- scene.set_pose(camera_node, pose=camera_pose)
-
-
- # pl = pyrender.PointLight(color=[1.0, 1.0, 1.0], intensity=1000.0)
- light = pyrender.DirectionalLight(color=[1.0, 1.0, 1.0], intensity=500.0)
- # 创建一个变换矩阵,用于移动光源的位置
- # 这里我们把光源移动到(0.5, 0.5, 0.5)的位置,你可以根据你的需要修改这些值
- light_pose = np.eye(4)
- light_pose[:3, 3] = [1, 1, 1]
- scene.add(light, pose=light_pose)
-
- # 用pyrender.Viewer()函数来可视化网格
- viewer = pyrender.Viewer(scene, use_raymond_lighting=True)
pyrender.Viewer是一个用于显示和交互3D场景的类,它的初始化方法如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。