请问有没有导入网格(例如OBJ)并粒子化的太极代码吗?

各位大佬,
请问有没有导入网格(例如OBJ)并粒子化的太极代码吗?

1 个赞

可以看一下这个 voxelizer 的代码:taichi_elements/voxelizer.py at master · taichi-dev/taichi_elements · GitHub

1 个赞

虽然过了这么多天,但还是分享一下解决方案。

是参考的铭睿的SPH_Taichi

其实就是借助trimesh这个库

可以试试看下面的代码

import taichi as ti   
import trimesh as tm  # load the triangle mesh
import numpy as np


def main():
    ti.init(arch=ti.cuda)

    mesh = tm.load("E:/Dev/SPH_Taichi/data/models/Dragon_50k.obj")

    voxelized_mesh = mesh.voxelized(pitch=0.02).fill()
    voxelized_points_np = voxelized_mesh.points 
    num_particles_obj = voxelized_points_np.shape[0]
    voxelized_points = ti.Vector.field(3, ti.f32, num_particles_obj)
    voxelized_points.from_numpy(voxelized_points_np)
#     np.savetxt("voxelized_points_np.csv",voxelized_points_np)

    window = ti.ui.Window("Test voxelize", (768, 768))
    canvas = window.get_canvas()
    scene = ti.ui.Scene()
    camera = ti.ui.make_camera()
    camera.position(5, 2, 2)
    while window.running:
        camera.track_user_inputs(window, movement_speed=0.005, hold_key=ti.ui.LMB)
        scene.set_camera(camera)
        scene.ambient_light((1, 1, 1))
        scene.point_light(pos=(0.5, 1.5, 1.5), color=(1, 1, 1))

        scene.particles(voxelized_points, color = (0.68, 0.26, 0.19), radius = 0.01)
        canvas.scene(scene)
        window.show()

if __name__ == "__main__":
    main()

obj文件下载在这里

https://raw.githubusercontent.com/chunleili/SPH_Taichi/chunlei/data/models/Dragon_50k.obj

可以看一下我简单使用方法的讲解

【taichi】将SPH所需模型网格体素化并粒子采样 【taichi】将SPH所需模型网格体素化并粒子采样_哔哩哔哩_bilibili

2 个赞

哦,对了。其实顺带一提。如果你会用Houdini,也可以在Houdini里面使用points from volume这个节点达到相同的功能。然后再导出点云为PLY读入你的程序即可