Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from direct.showbase.ShowBase import ShowBase
- from direct.task import Task
- from panda3d.core import *
- class MyApp(ShowBase):
- def __init__(self):
- ShowBase.__init__(self)
- # Move camera for a better view
- self.disableMouse() # if you leave mouse mode enabled camera position will be governed by Panda mouse control
- self.camera.setY(- 10)
- # Enable fast exit
- self.accept("escape", sys.exit)
- # Create cube
- gNode = self.createCube()
- self.cubeNodePath = self.render.attachNewNode(gNode)
- # Add a simple point light
- plight = PointLight('plight')
- plight.setColor(VBase4(0.5, 0.5, 0.5, 1))
- #plight.setAttenuation(Point3(0, 0, 0.5))
- plnp = self.render.attachNewNode(plight)
- plnp.setPos(4, -4, 4)
- self.render.setLight(plnp)
- # Add an ambient light
- alight = AmbientLight('alight')
- alight.setColor(VBase4(0.2, 0.2, 0.2, 1))
- alnp = self.render.attachNewNode(alight)
- self.render.setLight(alnp)
- # Add the spinCubeTask procedure to the task manager.
- self.taskMgr.add(self.spinCubeTask, "spinCubeTask")
- def spinCubeTask(self, task):
- angleDegrees = task.time * 6.0
- self.cubeNodePath.setHpr(angleDegrees, angleDegrees, angleDegrees)
- return Task.cont
- def createCube(self):
- format = GeomVertexFormat.getV3n3t2()
- vertexData = GeomVertexData('cube', format, Geom.UHStatic)
- vertexData.setNumRows(24)
- vertices = GeomVertexWriter(vertexData, 'vertex')
- normals = GeomVertexWriter(vertexData, 'normal')
- texcoord = GeomVertexWriter(vertexData, 'texcoord')
- n_forward = (0, 0, 1)
- n_back = (0, 0, -1)
- n_down = (0, -1, 0)
- n_left = (-1, 0, 0)
- n_right = (1, 0, 0)
- n_up = (0, 1, 0)
- p0 = (-0.5, -0.5, 0.5)
- p1 = (0.5, -0.5, 0.5)
- p2 = (0.5, -0.5, -0.5)
- p3 = (-0.5, -0.5, -0.5)
- p4 = (-0.5, 0.5, 0.5)
- p5 = (0.5, 0.5, 0.5)
- p6 = (0.5, 0.5, -0.5)
- p7 = (-0.5, 0.5, -0.5)
- uv00 = (0, 0)
- uv10 = (1, 0)
- uv01 = (0, 1)
- uv11 = (1, 1)
- vertices.addData3f(p4)
- vertices.addData3f(p5)
- vertices.addData3f(p1)
- vertices.addData3f(p0)
- texcoord.addData2f(uv11)
- texcoord.addData2f(uv01)
- texcoord.addData2f(uv00)
- texcoord.addData2f(uv10)
- normals.addData3f(n_forward)
- normals.addData3f(n_forward)
- normals.addData3f(n_forward)
- normals.addData3f(n_forward)
- primitive = GeomTriangles(Geom.UHStatic)
- primitive.addVertices(3, 1, 0)
- primitive.addVertices(3, 2, 1)
- geom = Geom(vertexData)
- geom.addPrimitive(primitive)
- node = GeomNode('cube gnode')
- node.addGeom(geom)
- return node
- app = MyApp()
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement