Пример #1
0
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 )
Пример #2
0
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 )
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
    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
Пример #6
0
    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)
Пример #7
0
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)
Пример #8
0
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 )
Пример #9
0
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)
Пример #10
0
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)