forked from openrndr/orx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DemoScene03.kt
55 lines (48 loc) · 1.66 KB
/
DemoScene03.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.DrawPrimitive
import org.openrndr.extensions.SingleScreenshot
import org.openrndr.extra.dnk3.*
import org.openrndr.extra.dnk3.renderers.dryRenderer
import org.openrndr.extra.camera.Orbital
import org.openrndr.extra.meshgenerators.sphereMesh
import org.openrndr.math.Vector3
import org.openrndr.math.transforms.transform
fun main() = application {
configure {
width = 1280
height = 720
//multisample = WindowMultisample.SampleCount(8)
}
program {
val root = SceneNode()
val scene = Scene(root)
val lightNode = SceneNode()
lightNode.transform = transform {
translate(0.0, 10.0, 0.0)
}
lightNode.entities.add(PointLight())
lightNode.entities.add(HemisphereLight(upColor = ColorRGBa.PINK, downColor = ColorRGBa(0.1,0.1,0.1)))
scene.root.children.add(lightNode)
val meshNode = SceneNode()
val box = sphereMesh(32, 32)
val geometry = Geometry(listOf(box), null, DrawPrimitive.TRIANGLES, 0, box.vertexCount)
val material = PBRMaterial()
val primitive = MeshPrimitive(geometry, material)
val mesh = Mesh(listOf(primitive))
meshNode.entities.add(mesh)
root.children.add(meshNode)
// -- create a renderer
val renderer = dryRenderer()
extend(Orbital()) {
far = 500.0
lookAt = Vector3(0.0, 0.0, 0.0)
eye = Vector3(3.0, 2.0, -3.0)
fov = 30.0
}
extend {
drawer.clear(ColorRGBa.PINK)
renderer.draw(drawer, scene)
}
}
}