def init(): global renderer, camera, scene, object, realCamera, realScene, cube, renderTarget pygame.init() pygame.display.set_mode( (width, height), DOUBLEBUF|OPENGL ) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize( width, height ) camera = THREE.PerspectiveCamera( 70, 1, 10, 1000 ) camera.position.z = 400 scene = THREE.Scene() scene.fog = THREE.Fog( 0x000000, 1, 1000 ) object = THREE.Object3D() scene.add( object ) geometry = THREE.SphereGeometry( 1, 4, 4 ) material = THREE.MeshLambertMaterial( color = 0xffffff ) for i in xrange( 100 ): mesh = THREE.Mesh( geometry, material ) mesh.position.set( random.uniform( -0.5, 0.5 ), random.uniform( -0.5, 0.5 ), random.uniform( -0.5, 0.5 ) ).normalize() mesh.position.multiplyScalar( random.uniform( 0, 400 ) ) mesh.rotation.set( random.uniform( 0, 2 ), random.uniform( 0, 2 ), random.uniform( 0, 2 ) ) mesh.scale.x = mesh.scale.y = mesh.scale.z = random.uniform( 0, 50 ) object.add( mesh ) scene.add( THREE.AmbientLight( 0x222222 ) ) light = THREE.DirectionalLight( 0xffffff ) light.position.set( 1, 1, 1 ) scene.add( light ) realCamera = THREE.PerspectiveCamera( 70, width / height, 10, 1000 ) realCamera.position.z = 200 renderTarget = THREE.OpenGLRenderTarget( 256, 256 ) realScene = THREE.Scene() realScene.background = THREE.Color().setHSL( 0, 1, 0.5 ) cubeGeom = THREE.BoxGeometry( 100, 100, 100 ) cubeMat = THREE.MeshBasicMaterial( map = renderTarget.texture ) cube = THREE.Mesh( cubeGeom, cubeMat ) realScene.add( cube )
def init(): global renderer, camera, scene, material pygame.init() pygame.display.set_mode( (width, height), DOUBLEBUF|OPENGL ) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize( width, height ) camera = THREE.PerspectiveCamera( 55, width / height, 10, 2000 ) camera.position.z = 1000 scene = THREE.Scene() scene.fog = THREE.FogExp2( 0x000000, 0.001 ) geometry = THREE.Geometry() sprite = THREE.TextureLoader().load( toAbs( "textures/sprites/disc.png" ) ) for i in xrange( 10000 ): vertex = THREE.Vector3() vertex.x = random.uniform( -1000, 1000 ) vertex.y = random.uniform( -1000, 1000 ) vertex.z = random.uniform( -1000, 1000 ) geometry.vertices.append( vertex ) material = THREE.PointsMaterial( size = 35, sizeAttenuation = False, map = sprite, alphaTest = 0.5, transparent = True ) material.color.setHSL( 1.0, 0.3, 0.7 ) particles = THREE.Points( geometry, material ) scene.add( particles )
def init(): global renderer, camera, scene, boxObject, bufferScene, bufferTexture, bufferCamera, mainBoxObject pygame.init() pygame.display.set_mode((width, height), DOUBLEBUF | OPENGL) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize(width, height) camera = THREE.PerspectiveCamera(70, width / height, 1, 1000) bufferCamera = THREE.PerspectiveCamera(70, 1, 1, 1000) scene = THREE.Scene() bufferScene = THREE.Scene() bufferTexture = THREE.OpenGLRenderTarget(256, 256, minFilter=THREE.LinearFilter, magFilter=THREE.NearestFilter) redMaterial = THREE.MeshBasicMaterial(color=0xF06565) boxGeometry = THREE.BoxGeometry(5, 5, 5) boxObject = THREE.Mesh(boxGeometry, redMaterial) boxObject.position.z = -10 bufferScene.add(boxObject) blueMaterial = THREE.MeshBasicMaterial(color=0x7074FF) plane = THREE.PlaneBufferGeometry(width, height) planeObject = THREE.Mesh(plane, blueMaterial) planeObject.position.z = -15 bufferScene.add(planeObject) boxMaterial = THREE.MeshBasicMaterial(map=bufferTexture.texture) boxGeometry2 = THREE.BoxGeometry(5, 5, 5) mainBoxObject = THREE.Mesh(boxGeometry2, boxMaterial) mainBoxObject.position.z = -10 scene.add(mainBoxObject)
def init(): global renderer, camera, scene, materials, parameters pygame.init() pygame.display.set_mode((width, height), DOUBLEBUF | OPENGL) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize(width, height) camera = THREE.PerspectiveCamera(75, width / height, 10, 3000) camera.position.z = 1000 scene = THREE.Scene() scene.fog = THREE.FogExp2(0x000000, 0.0007) geometry = THREE.Geometry() for i in xrange(20000): vertex = THREE.Vector3() vertex.x = random.uniform(-1000, 1000) vertex.y = random.uniform(-1000, 1000) vertex.z = random.uniform(-1000, 1000) geometry.vertices.append(vertex) parameters = [[[1, 1, 0.5], 5], [[0.95, 1, 0.5], 4], [[0.90, 1, 0.5], 3], [[0.85, 1, 0.5], 2], [[0.80, 1, 0.5], 1]] materials = [] for param in parameters: color = param[0] size = param[1] mat = THREE.PointsMaterial(size=size) materials.append(mat) particles = THREE.Points(geometry, mat) particles.rotation.x = random.uniform(0, 2 * math.pi) particles.rotation.y = random.uniform(0, 2 * math.pi) particles.rotation.z = random.uniform(0, 2 * math.pi) scene.add(particles)
def test_clone(self): near = 1 far = 3 bottom = -1 top = 1 aspect = 16 / 9 fov = 90 cam = THREE.PerspectiveCamera(fov, aspect, near, far) clonedCam = cam.clone() self.assertEqual(cam.fov, clonedCam.fov) # fov is equal self.assertEqual(cam.aspect, clonedCam.aspect) # aspect is equal self.assertEqual(cam.near, clonedCam.near) # near is equal self.assertEqual(cam.far, clonedCam.far) # far is equal self.assertEqual(cam.zoom, clonedCam.zoom) # zoom is equal self.assertTrue(cam.projectionMatrix.equals( clonedCam.projectionMatrix)) # projectionMatrix is equal
def test_updateProjectionMatrix(self): cam = THREE.PerspectiveCamera(75, 16 / 9, 0.1, 300.0) # updateProjectionMatrix is called in contructor m = cam.projectionMatrix # perspective projection is given my the 4x4 Matrix # 2n/r-l 0 l+r/r-l 0 # 0 2n/t-b t+b/t-b 0 # 0 0 -(f+n/f-n) -(2fn/f-n) # 0 0 -1 0 # self matrix was calculated by hand via glMatrix.perspective(75, 16 / 9, 0.1, 300.0, pMatrix) # to get a reference matrix from plain WebGL reference = THREE.Matrix4().set(0.7330642938613892, 0, 0, 0, 0, 1.3032253980636597, 0, 0, 0, 0, -1.000666856765747, -0.2000666856765747, 0, 0, -1, 0) self.assertEqual(reference, m)
def init(): global renderer, camera, scene, mesh pygame.init() pygame.display.set_mode((width, height), DOUBLEBUF | OPENGL) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize(width, height) camera = THREE.PerspectiveCamera(70, width / height, 1, 1000) camera.position.z = 400 scene = THREE.Scene() texture = THREE.TextureLoader().load(toAbs("textures/crate.gif")) # print(texture.image) geometry = THREE.BoxBufferGeometry(200, 200, 200) material = THREE.MeshBasicMaterial(map=texture) mesh = THREE.Mesh(geometry, material) scene.add(mesh)
import THREE from THREE.utils import Expando from OpenGL.GL import * from ctypes import * width = 800 height = 600 pygame.init() pygame.display.set_mode( (width, height), DOUBLEBUF|OPENGL ) scene = THREE.Scene() camera = THREE.PerspectiveCamera( 75, width / height, 0.1, 1000 ) renderer = THREE.OpenGLRenderer geometry = THREE.BoxGeometry( 1, 1, 1 ) material = THREE.MeshBasicMaterial(color = 0x00ff00 ) cube = THREE.Mesh( geometry, material ) scene.add( cube ) camera.position.z = 5 scene.updateMatrixWorld() camera.updateMatrixWorld() projectionMatrix = camera.projectionMatrix.clone().multiply( camera.matrixWorldInverse ).elements cube.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, cube.matrixWorld )
def init(): global renderer, camera, scene, mesh pygame.init() pygame.display.set_mode((width, height), DOUBLEBUF | OPENGL) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize(width, height) camera = THREE.PerspectiveCamera( 45, width / height, 10, 2000) # change near from 1 to 10, to avoid z fighting :( camera.position.z = 400 scene = THREE.Scene() scene.add(THREE.AmbientLight(0x404040)) light = THREE.DirectionalLight(0xffffff) light.position.set(0, 1, 0) scene.add(light) map = THREE.TextureLoader().load(toAbs("textures/UV_Grid_Sm.jpg")) map.wrapS = map.wrapT = THREE.RepeatWrapping map.anisotropy = 16 material = THREE.MeshLambertMaterial(map=map, side=THREE.DoubleSide) object = THREE.Mesh(THREE.SphereGeometry(75, 20, 10), material) object.position.set(-400, 0, 200) scene.add(object) object = THREE.Mesh(THREE.IcosahedronGeometry(75, 1), material) object.position.set(-200, 0, 200) scene.add(object) object = THREE.Mesh(THREE.OctahedronGeometry(75, 2), material) object.position.set(0, 0, 200) scene.add(object) object = THREE.Mesh(THREE.TetrahedronGeometry(75, 0), material) object.position.set(200, 0, 200) scene.add(object) # object = THREE.Mesh(THREE.PlaneGeometry(100, 100, 4, 4), material) object.position.set(-400, 0, 0) scene.add(object) object = THREE.Mesh(THREE.BoxGeometry(100, 100, 100, 4, 4, 4), material) object.position.set(-200, 0, 0) scene.add(object) object = THREE.Mesh(THREE.CircleGeometry(50, 20, 0, math.pi * 2), material) object.position.set(0, 0, 0) scene.add(object) object = THREE.Mesh(THREE.RingGeometry(10, 40, 20, 5, 0, math.pi * 2), material) object.position.set(200, 0, 0) scene.add(object) object = THREE.Mesh(THREE.CylinderGeometry(25, 75, 100, 40, 5), material) object.position.set(400, 0, 0) scene.add(object) # points = [] for i in xrange(50): points.append( THREE.Vector2( math.sin(i * 0.2) * math.sin(i * 0.1) * 15 + 50, (i - 5) * 2)) object = THREE.Mesh(THREE.LatheGeometry(points, 20), material) object.position.set(-400, 0, -200) scene.add(object) object = THREE.Mesh(THREE.TorusGeometry(50, 20, 20, 20), material) object.position.set(-200, 0, -200) scene.add(object) object = THREE.Mesh(THREE.TorusKnotGeometry(50, 10, 50, 20), material) object.position.set(0, 0, -200) scene.add(object) object = THREE.AxisHelper(50) object.position.set(200, 0, -200) scene.add(object) object = THREE.ArrowHelper(THREE.Vector3(0, 1, 0), THREE.Vector3(0, 0, 0), 50) object.position.set(400, 0, -200) scene.add(object)
def init(): global renderer, camera, scene, materials, parameters pygame.init() pygame.display.set_mode((width, height), DOUBLEBUF | OPENGL) renderer = THREE.OpenGLRenderer renderer.init() renderer.setSize(width, height) camera = THREE.PerspectiveCamera(75, width / height, 1, 3000) camera.position.z = 1000 scene = THREE.Scene() scene.fog = THREE.FogExp2(0x000000, 0.0008) geometry = THREE.Geometry() textureLoader = THREE.TextureLoader() sprite1 = textureLoader.load(toAbs("textures/sprites/snowflake1.png")) sprite2 = textureLoader.load(toAbs("textures/sprites/snowflake2.png")) sprite3 = textureLoader.load(toAbs("textures/sprites/snowflake3.png")) sprite4 = textureLoader.load(toAbs("textures/sprites/snowflake4.png")) sprite5 = textureLoader.load(toAbs("textures/sprites/snowflake5.png")) for i in xrange(10000): vertex = THREE.Vector3() vertex.x = random.uniform(-1000, 1000) vertex.y = random.uniform(-1000, 1000) vertex.z = random.uniform(-1000, 1000) geometry.vertices.append(vertex) parameters = [[[1.0, 0.2, 0.5], sprite2, 20], [[0.95, 0.1, 0.5], sprite3, 15], [[0.90, 0.05, 0.5], sprite1, 10], [[0.85, 0, 0.5], sprite5, 8], [[0.80, 0, 0.5], sprite4, 5]] materials = [] for param in parameters: color = param[0] sprite = param[1] size = param[2] mat = THREE.PointsMaterial(size=size, map=sprite, blending=THREE.AdditiveBlending, depthTest=False, transparent=True) mat.color.setHSL(color[0], color[1], color[2]) materials.append(mat) particles = THREE.Points(geometry, mat) particles.rotation.x = random.uniform(0, 2 * math.pi) particles.rotation.y = random.uniform(0, 2 * math.pi) particles.rotation.z = random.uniform(0, 2 * math.pi) scene.add(particles)