Rotating Cube

Demonstrates: MeshInstance3D, Camera3D, Material, process() rotation. Run: python packages/graphics/examples/start_rotating_cube.py

Source Code

 1#!/usr/bin/env python3
 2"""Rotating cube -- simple 3D demo using the node system.
 3
 4Demonstrates: MeshInstance3D, Camera3D, Material, process() rotation.
 5Run: python packages/graphics/examples/start_rotating_cube.py
 6"""
 7
 8from simvx.core import Camera3D, Material, MeshInstance3D, Node, ResourceCache, Vec3
 9from simvx.graphics import App
10
11
12class RotatingCube(Node):
13    def ready(self):
14        cam = self.add_child(Camera3D(name="Camera", position=Vec3(0, 2, 5)))
15        cam.look_at(Vec3(0, 0, 0))
16        cam.fov = 60.0
17
18        self.cube = self.add_child(MeshInstance3D(name="Cube"))
19        self.cube.mesh = ResourceCache.get().resolve_mesh("mesh://cube")
20        self.cube.material = Material(colour=(0.2, 0.6, 1.0, 1.0), roughness=0.4)
21
22    def process(self, dt: float):
23        self.cube.rotate_y(1.0 * dt)
24        self.cube.rotate_x(0.5 * dt)
25
26
27if __name__ == "__main__":
28    App(title="Rotating Cube", width=800, height=600).run(RotatingCube())