summaryrefslogtreecommitdiffstats
path: root/libdimension-python/tests/demo.py
diff options
context:
space:
mode:
Diffstat (limited to 'libdimension-python/tests/demo.py')
-rwxr-xr-xlibdimension-python/tests/demo.py138
1 files changed, 127 insertions, 11 deletions
diff --git a/libdimension-python/tests/demo.py b/libdimension-python/tests/demo.py
index fd4d193..4b68114 100755
--- a/libdimension-python/tests/demo.py
+++ b/libdimension-python/tests/demo.py
@@ -24,29 +24,145 @@ from dimension import *
# Treat warnings as errors for tests
dieOnWarnings(True)
+# Canvas
canvas = Canvas(width = 768, height = 480)
havePNG = True
try:
- canvas.optimizePNG()
+ canvas.optimizePNG()
except OSError as e:
- if e.errno == errno.ENOSYS:
- havePNG = False
- else:
- raise
+ if e.errno == errno.ENOSYS:
+ havePNG = False
+ else:
+ raise
+# Camera
camera = PerspectiveCamera(location = (0, 0.25, -4),
- look_at = Zero)
+ lookAt = 0)
camera.transform(rotate(53*Y))
+# Lights
+lights = [
+ PointLight(location = (-15, 20, 10), color = White),
+]
+
+# Objects
+
+hollowCube = Difference(
+ [
+ Box(
+ (-1, -1, -1), (1, 1, 1),
+
+ texture = Texture(
+ pigment = Color(0, 0, 1, trans = 0.75, filter = 1/3),
+ finish = Reflection(0.5),
+ ),
+ interior = Interior(
+ ior = 1.1,
+ ),
+ )
+ .transform(rotate(45*X)),
+
+ Sphere(
+ center = 0, radius = 1.25,
+ texture = Texture(
+ pigment = Green,
+ finish = Phong(strength = 0.2, size = 40),
+ ),
+ )
+ ],
+)
+
+arrow = Union(
+ [
+ Cylinder(bottom = -1.25*Y, top = 1.25*Y, radius = 0.1),
+ Cone(
+ bottom = 1.25*Y, bottomRadius = 0.1,
+ top = 1.5*Y, topRadius = 0,
+ open = True
+ ),
+ ],
+ texture = Texture(
+ pigment = ColorMap(
+ Gradient(Y),
+ {
+ 0/6: Red,
+ 1/6: Orange,
+ 2/6: Yellow,
+ 3/6: Green,
+ 4/6: Blue,
+ 5/6: Magenta,
+ 6/6: Red,
+ },
+ )
+ .transform(scale(1, 2.75, 1))
+ .transform(translate(-1.25*Y)),
+ ),
+)
+arrow.transform(rotate(-45*X))
+
+torii = Union(
+ [
+ Torus(majorRadius = 0.15, minorRadius = 0.05)
+ .transform(translate(-Y)),
+
+ Torus(majorRadius = 0.15, minorRadius = 0.05),
+
+ Torus(majorRadius = 0.15, minorRadius = 0.05)
+ .transform(translate(Y)),
+ ],
+ texture = Texture(
+ pigment = Blue,
+ finish = Ambient(1),
+ ),
+)
+torii.transform(rotate(-45*X))
+
+ground = Plane(
+ normal = Y, distance = -2,
+
+ texture = Texture(
+ pigment = PigmentMap(
+ Checker(),
+ [
+ White,
+ ColorMap(Checker(), [Black, White]).transform(scale(1/3, 1/3, 1/3))
+ ],
+ ),
+ ),
+)
+
objects = [
- Sphere(radius = 1, center = Zero)
+ hollowCube,
+ arrow,
+ torii,
+ ground,
]
-scene = Scene(canvas = canvas,
- camera = camera,
- objects = objects)
+# Sky sphere
+skySphere = SkySphere(
+ [
+ ColorMap(
+ pattern = Gradient(Y),
+ map = {
+ 0: Orange,
+ 0.35: Color(0, 0.1, 0.2, trans = 0.1, filter = 0.0),
+ },
+ ),
+ ]
+)
+
+# Scene
+scene = Scene(canvas = canvas,
+ objects = objects,
+ lights = lights,
+ camera = camera)
+scene.defaultTexture = Texture(finish = Ambient(0.1) + Diffuse(0.6))
+scene.background = Clear
+scene.skySphere = skySphere
+scene.adcBailout = 1/255
+scene.recursionLimit = 5
scene.raytrace()
if havePNG:
- canvas.writePNG('demo.png')
+ canvas.writePNG('demo.png')