Reference
Primitives
Block
block(l:number, w:number, h:number): node
A block with dimension l
along the X-axis, w
along the Y-axis and h
along the Z-axis.
Wedge
wedge(l:number, w:number, h:number): node
A wedge with dimension l
along the X-axis, w
along the Y-axis and h
along the Z-axis.
Cylinder
cylinder(d:number, h:number): node
A cylinder with diameter d
and heigth h
in Z-direction.
Cone
cone(d1:number, d2:number, h:number): node
A cone with bottom diameter d1
, top diameter d2
and heigth h
in Z-direction.
Sphere
sphere(d:number): node
A sphere with diameter d
centered around the current position.
Torus
torus(d:number, h:number, angle?:number)
A torus with outer diameter d
, tube diameter h
and optional angle in degrees.
Extrusions and sweeps
Extrude
extrude(points:[], h:number)
Extrusion of profile defined by the array of points along the Z-axis with height h
. Each point is defined by an array of two numbers.
Wall
wall(points2D:[], w:number, h:number, options?: {floor:boolean, roof: boolean})
Wall defined by an array of points in the XY-plane, with wall thickness w
and height h
and optional option to define if a floor or roof should be added.
Sweep
sweep(points2D:[], angle?:number)
Sweep of profile defined by the array of points in XY-plane along the X-axis. The angle in degrees is optional.
Tube
tube(points3D:[], d:number)
Tube through array of 3D points with diameter d
.
Part
part(name: string, parameters...)
Include another object defined by name
and optional parameters defined in the first lines of the object.
Transformations
Move
move(x:number, y:number, z:number)
Translate the current position along the XYZ-axis. All subsequent objects and transformations will be affected.
Turn
turn(x:number, y:number, z:number)
Rotate the current position along the XYZ-axis. All subsequent objects and transformations will be affected.
Scale
scale(x:number, y:number, z:number)
Scale the current position along the XYZ-axis. All subsequent objects and transformations will be affected.
Combine objects
Add
add(a?: function, b?: function)
Add two objects defined by optional functions a()
and b()
. If no arguments are provided the last two objects are added. Example:
cylinder(10, 20)
block(10,10)
add()
Subtract
subtract(a?: function, b?: function)
Subtract object defined by functions b()
from object defined by function a()
. If no arguments are provided the last objects is subtracted from the previous object. Example:
function a(size) {
block(size, size, size)
}
const b = () => {
move(5, 0, 5)
color("red")
sphere(10)
cylinder(10, 20)
}
subtract(a(15), b())
Intersect
intersect(a?: function, b?: function)
Take the common part of two objects defined by optional functions a()
and b()
. If no arguments are provided the last two objects are united.
Example:
{
block(10, 10, 10);
}
{
move(4, 0, 5);
color(10027008);
cylinder(8, 10);
}
intersect();
Hull
hull(a?:function)
Create a convex hull that encloses the geometry. If no arguments are provided the geometry of the last object is used. Example:
{
cylinder(15, 10);
move(30, 0, 0);
cylinder(5, 2);
}
hull();
Materials
Color
color(color: string)
Set the current color. The color can be a named color like 'red' or a hexadecimal value such as #ff0000
Transparency
transparency(transparency: number)
Set the current transparency to a value between 0
and 100
. A high value is more transparent.
Shininess
shininess(shininess: number)
Set the current shininess to a value between 0
and 100
. A high value is more glossy.
Emissive
emissive(emissive: number)
Set the current emission of light of the object to a value between 0
and 100
. A high value radiates more light.
Texture
texture(name: string, s?: number, t?: number)
Apply the texture defined by name
to the following objects. Optionally specify the number of repetitions in both directions with s
and t
.
Lighting
Light
light(type: 'ambient' | 'point' |'spot', options: { color?: string, intensity?: number, power?: number, position?: [number, number, number], target?: [number, number, number], angle?:number)
When you add a light to the scene this replaces the default lighting settings. You can combine multiple lights in a single scene. The position
is only applicable for point
and spot
lights. For spot
lights you can define the target
point to which the light is aimed and the angle
of the light beam in degrees. Examples:
light('ambient', {color: 'red', intensity: 3})
light('point', {color: '#FFFF00', intensity: 1, position: [10,3,20]})
light('spot', {color: '#FFFF00', intensity: 1, position: [30,10,20], target:[0,0,5], angle: 10})
Animation
Animate
animate(keyframe:[], options?: {type: "rotate"|"translate"})
Animate the last object using an array of keyframe. Each keyframe is an array of 4 numbers where this first number is the time defined in seconds and the following three numbers the 3D position or rotation at that time. Example:
{
block(10,10,10)
cylinder(10, 50)
}
animate([[1, 0, 0,10],[2, 0, 10,10]], {type: 'translate'})