An open API service indexing awesome lists of open source software.

https://github.com/robinrodricks/zen3d

High-performance 3D engine for Adobe Flash & AIR (GPU based)
https://github.com/robinrodricks/zen3d

Last synced: 6 months ago
JSON representation

High-performance 3D engine for Adobe Flash & AIR (GPU based)

Awesome Lists containing this project

README

          

# Zen3D
High-performance 3D engine for Adobe Flash & AIR (GPU based)

## API

### Display Objects
The `zen.display` namespace contains visual objects that can be added to a Zen3D instance.

*Stage*

- **Zen3D** - A 3D scene and viewport, that contains all the 3D objects to be displayed. Similar to the Stage in 2D graphics.

- **ZenStereo3D** - An extension to the Zen3D class that renders two views of the same scene for stereo rendering.

*Basic objects*

- **ZenObject** - The base class for all 3D display objects. Supports transformation (position, rotation, scaling), materials, animation and mouse dragging.

- **ZenCamera** - A 3D camera that supports perspective and orthogonal views. Link this to a Zen3D instance to modify its viewport according to the camera position/rotation. You can create multiple cameras but only one can be active at a time.

- **ZenLight** - A 3D directional or point light that supports various lighting configurations. Only objects whose materials have a LightFilter will respond to lighting.

*Mesh objects*

- **ZenMesh** - A 3D mesh object that holds the geometry and material used to render it.

- **ZenFace** - A face that holds a number of triangles of a given 3D mesh (ZenMesh). For performance optimization, you can create a single face for all the tris in a mesh.

*Graphics objects*

- **ZenSpline** - A 3D B-Spline that renders multiple Spline3D objects in 3D space.

- **ZenCanvas** - A 3D canvas that supports moveTo/lineTo API similar to the Graphics class. All elements are internally rendered with 3D lines, since curves are not supported by the GPU.

- **ZenPrimitives** - A static class that provides methods to create various types of 3D primitives.

*Other objects*

- **ZenParticles** - A 3D particle manager that automatically creates 3D particles based on its configuration.

- **ZenReflector** - A 3D plane that renders the reflection of nearby objects.

- **ZenShadowLight** - A 3D shadow projector that renders shadows behind objects it is pointed towards. Must be added to a Zen3D instance to take effect.

- **ZenBatchRenderer** - Used to efficiently render multiple faces by batching them in a single draw-call

- **ZenSkyBox** - A 3D skybox that renders a six-sided cube to display a skybox texture on.

### Physics
The `zen.physics` namespace contains a rigid-body physics engine.

- **ZenPhysics** - The main physics manager that handles rigid-body dynamics for a given Zen3D instance.

### Animation
The `zen.animation` namespace contains animation managers for meshes (ZenMesh).

- **ZenSkinModifier** - Animates a 3D mesh using skin transform to support kinematics.

- **ZenVertexModifier** - Animates a single 3D vertex of a mesh using linear interpolation.

### Input
The `zen.input` helps you handle mouse and keyboard events.

- **KeyCodes** - Provides constants for detecting specific key codes.

- **ZenInput** - Handles keyboard and mouse events.

- **MouseEvent3D** - Fired when the user interacts with a 3D object with the mouse/touchscreen.

### Materials
The `zen.materials` namespace contains texture and material objects used by meshes.

- **ZenMaterial** - A complete material that can be applied to a ZenMesh. Contains multiple filters that configure the material's rendering.

- **ZenTexture** - A single texture bitmap used for texture mapping and for various masks/maps. Added to a ZenMaterial using filters (see below).

### Filters
The `zen.filters.color` namespace contains color and texture related filters that can be added to a ZenMaterial.

- **ColorFilter** - A material filter that tints the face by the given color.

- **ColorMatrixFilter3D** - A material filter that modifies the face by the given color matrix.

- **ColorTransformFilter** - A material filter that modifies the face by the given color transform object.

- **FogFilter** - A material filter that creates a fog effect.

- **LightFilter** - A material filter that responds to scene lighting.

- **SpecularFilter** - A material filter that responds to scene lighting supporting specular lighting.

- **NullFilter** - A material filter that changes the tint by a given color .

- **SelfColorFilter** - A material filter that tints the face by the given color.

- **VertexColorFilter** - A material filter that changes the vertex color.

The `zen.filters.maps` namespace contains texture map and map-related filters that can be added to a ZenMaterial.

- **AlphaMaskFilter** - A material filter that uses a bitmap as an alpha mask.

- **CubeMapFilter** - A material filter that uses a bitmap as a cube map.

- **EnvironmentMapFilter** - A material filter that uses a bitmap for environment mapping.

- **LightMapFilter** - A material filter that uses a bitmap to respond to scene lighting.

- **NormalMapFilter** - A material filter that uses a bitmap to specify normals, which adds fine details to a rough mesh.

- **PlanarMapFilter** - A material filter that uses a bitmap to specify a planar map.

- **ReflectionMapFilter** - A material filter that uses a bitmap to specify reflection.

- **SpecularMapFilter** - A material filter that uses a bitmap to specify a specular map.

- **TextureMapFilter** - A material filter that displays a bitmap as the texture.

- **TextureMaskFilter** - A material filter that uses a bitmap to specify which portions of the texture are visible.

The `zen.filters.transform` namespace contains transform-related filters that can be added to a ZenMaterial.

- **FlipNormalsFilter** - A material filter that flips all vertex/face normals.

- **SkinTransformFilter** - A material filter that responds to skin transform.

- **TransformFilter** - A material filter that responds to transform.

### Geometry
The `zen.geom` namespace contains geometry objects used throughout the library.

- **M3D** - Primitive geometric calculations for 3D matrices.

- **V3D** - Primitive geometric calculations for 3D vectors and points.

- **Cube3D** - An axis-aligned 3D cube that storeds information of object bounds & dimensions.

- **Frame3D** - A matrix that stores information about a certain object's transform (or frame).

- **Intersection3D** - A single 3D intersection between two objects.

- **Spline3D** - A 3D B-spline consisting of multiple knots (SplineKnot3D).

- **SplineKnot3D** - A knot on a 3D spline (Spline3D).

The `zen.geom.intersects` namespace contains calculators for various types of 3D intersections.

- **MouseIntersect** - Calculates intersection of 3D objects and the mouse, or any 2D point.

- **RayIntersect** - Calculates intersection of 3D objects and a 3D ray.

- **SphereIntersect** - Calculates intersection of 3D objects and a 3D sphere.