def __setup_scene(self, depsgraph): scene = depsgraph.scene options = scene.tina_render self.scene = tina.PTScene((self.size_x, self.size_y), smoothing=options.smoothing, texturing=options.texturing) self.scene.lighting = tina.Lighting() for object in depsgraph.ids: if isinstance(object, bpy.types.Object): if object.type == 'MESH': self.__setup_mesh_object(object, depsgraph) @ti.materialize_callback def init_scene(): for world, verts, norms, coors, mtlid in self.object_to_mesh.values( ): self.scene.add_mesh(world, verts, norms, coors, mtlid)
import taichi as ti import numpy as np import tina ti.init(ti.gpu) dens = np.load('assets/smoke.npy')[::1, ::1, ::1] scene = tina.PTScene() scene.engine.skybox = tina.Atomsphere() volume = tina.VolumeScale(tina.SimpleVolume(N=dens.shape[0]), scale=5) scene.add_object(tina.MeshModel('assets/monkey.obj')) g = tina.Param(float, initial=0.76) scene.add_object(volume, tina.HenyeyGreenstein(g=g)) #scene.add_object(tina.MeshTransform(tina.MeshModel('assets/plane.obj'), # tina.translate([0, 0, 4]) @ tina.eularXYZ([ti.pi / 2, 0, 0])), # tina.Emission() * 4) gui = ti.GUI('volume', scene.res) g.make_slider(gui, 'g', -1, 1, 0.01) volume.set_volume_density(dens) scene.update() while gui.running: scene.input(gui) scene.render() #nsteps=32) gui.set_image(scene.img) gui.show()
import taichi as ti import numpy as np import tina ti.init(ti.gpu) scene = tina.PTScene(smoothing=True, texturing=True) #scene.lighting.skybox = tina.Skybox('assets/skybox.jpg', cubic=True) model = tina.MeshModel('assets/bunny.obj') #material = tina.PBR(roughness=0.0, metallic=0.0) material = tina.PBR(roughness=0.2, metallic=0.8) scene.add_object(model, material) denoise = tina.Denoise(scene.res) if isinstance(scene, tina.PTScene): scene.update() gui = ti.GUI('noise', scene.res) while gui.running: scene.input(gui) if isinstance(scene, tina.PTScene): scene.render(nsteps=5) else: scene.render() #gui.set_image(scene.img) denoise.src.from_numpy(scene.img) denoise.nlm(radius=2, noiseness=0.9) gui.set_image(denoise.dst) gui.show()
import taichi as ti import numpy as np import tina ti.init(ti.cpu) scene = tina.PTScene(smoothing=True) scene.engine.skybox = tina.PlainSkybox() scene.add_object(tina.MeshModel('assets/monkey.obj'), tina.Lambert()) gui = ti.GUI('fpe', scene.res) scene.update() while gui.running: if scene.input(gui): scene.clear() scene.render() gui.set_image(scene.img) gui.show()