예제 #1
0
def main(filename, radius=0.05):
    ti.init(ti.gpu)

    pos = np.load(filename).astype(np.float32)
    scene = tina.Scene((1024, 768))
    pars = tina.SimpleParticles(maxpars=len(pos))
    scene.add_object(pars)

    gui = ti.GUI('particles', scene.res, fast_gui=True)
    pars.set_particles(pos)
    pars.set_particle_radii(np.ones(len(pos), dtype=np.float32) * radius)
    while gui.running:
        scene.input(gui)
        scene.render()
        gui.set_image(scene.img)
        gui.show()
예제 #2
0
        v[p] = new_v
        x[p] += dt * v[p]
        J[p] *= 1 + dt * new_C.trace()
        C[p] = new_C


@ti.kernel
def init():
    for i in range(n_particles):
        x[i] = ti.Vector([ti.random() for i in range(dim)]) * 0.4 + 0.15
        v[i] *= 0
        J[i] = 1


scene = tina.Scene(maxpars=n_particles)
pars = tina.SimpleParticles(n_particles, radius=0.01)
scene.add_object(pars)

gui = ti.GUI('pars_mpm3d', scene.res)
scene.init_control(gui, center=[0.5, 0.5, 0.5], radius=1.5)

scene.lighting.clear_lights()
scene.lighting.add_light([-0.4, 1.5, 1.8], color=[0.8, 0.8, 0.8])
scene.lighting.set_ambient_light([0.22, 0.22, 0.22])

init()
while gui.running:
    scene.input(gui)
    if gui.is_pressed('r'):
        init()
    for s in range(steps):
예제 #3
0
        f"Res [{RES_X}x{RES_Y}] GPU {args.cuda} RVIZ {disp_in_rviz} size of map {args.map_size} grid {args.voxel_size} "
    )

    if args.record:
        ti.core.start_recording('./export/TaichiSLAM.yml')
        ti.init(arch=ti.cc)
    else:
        if args.cuda:
            ti.init(arch=ti.cuda)
        else:
            ti.init(arch=ti.cpu, debug=True)

    gui = ti.GUI('TaichiSLAM', (RES_X, RES_Y))
    level = 1
    scene = tina.Scene(RES_X, RES_Y, bgcolor=(0.1, 0.1, 0.1))
    pars1 = tina.SimpleParticles(maxpars=args.max_disp_particles)
    pars2 = tina.SimpleParticles(maxpars=args.max_disp_particles)
    material1 = tina.Lamp()
    material2 = tina.Lamp()
    scene.add_object(pars1, material1)
    scene.add_object(pars2, material2)
    if args.method == "octo":
        mapping = Octomap(texture_enabled=args.texture_enabled,
                          max_disp_particles=args.max_disp_particles,
                          min_occupy_thres=args.occupy_thres,
                          map_scale=args.map_size,
                          voxel_size=args.voxel_size,
                          K=args.K)
    elif args.method == "esdf":
        mapping = DenseESDF(texture_enabled=args.texture_enabled,
                            max_disp_particles=args.max_disp_particles,
예제 #4
0
import taichi as ti
import numpy as np
import tina

ti.init(ti.gpu)

scene = tina.Scene()

pars = tina.SimpleParticles()
material = tina.Classic()
scene.add_object(pars, material)

gui = ti.GUI('particles')

pos = np.random.rand(1024, 3).astype(np.float32) * 2 - 1
pars.set_particles(pos)
radius = np.random.rand(1024).astype(np.float32) * 0.1 + 0.1
pars.set_particle_radii(radius)
color = np.random.rand(1024, 3).astype(np.float32) * 0.8 + 0.2
pars.set_particle_colors(color)

while gui.running:
    scene.input(gui)
    scene.render()
    gui.set_image(scene.img)
    gui.show()