Demos: ensure 720px wide, reduce indentation
This commit is contained in:
@@ -15,42 +15,40 @@ import java.io.File
|
||||
* Demonstrate decal generator as an object slicer
|
||||
* @see <img src="https://raw.githubusercontent.com/openrndr/orx/media/orx-mesh-generators/images/decal-DemoDecal01Kt.png">
|
||||
*/
|
||||
fun main() {
|
||||
application {
|
||||
configure {
|
||||
width = 720
|
||||
height = 720
|
||||
fun main() = application {
|
||||
configure {
|
||||
width = 720
|
||||
height = 720
|
||||
}
|
||||
program {
|
||||
val obj = loadOBJMeshData(File("demo-data/obj-models/suzanne/Suzanne.obj")).toMeshData().triangulate()
|
||||
|
||||
val slices = 25
|
||||
val sliceStep = 0.1
|
||||
val sliceWidth = 0.14
|
||||
|
||||
val sliceVBs = (0 until slices).map {
|
||||
val projector = buildTransform {
|
||||
translate(0.0, 0.0, -1.0 + it * sliceStep)
|
||||
}
|
||||
val decal = obj.decal(projector, Vector3(4.0, 4.0, sliceWidth))
|
||||
val vb = decal.toVertexBuffer()
|
||||
vb
|
||||
}
|
||||
program {
|
||||
val obj = loadOBJMeshData(File("demo-data/obj-models/suzanne/Suzanne.obj")).toMeshData().triangulate()
|
||||
|
||||
val slices = 25
|
||||
val sliceStep = 0.1
|
||||
val sliceWidth = 0.14
|
||||
|
||||
val sliceVBs = (0 until slices).map {
|
||||
val projector = buildTransform {
|
||||
translate(0.0, 0.0, -1.0 + it * sliceStep)
|
||||
}
|
||||
val decal = obj.decal(projector, Vector3(4.0, 4.0, sliceWidth))
|
||||
val vb = decal.toVertexBuffer()
|
||||
vb
|
||||
extend(Orbital()) {
|
||||
eye = Vector3(0.0, 0.0, 2.0)
|
||||
}
|
||||
extend {
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """x_fill.rgb = v_viewNormal.rgb * 0.5 + 0.5; """
|
||||
}
|
||||
|
||||
extend(Orbital()) {
|
||||
eye = Vector3(0.0, 0.0, 2.0)
|
||||
}
|
||||
extend {
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """x_fill.rgb = v_viewNormal.rgb * 0.5 + 0.5; """
|
||||
}
|
||||
|
||||
drawer.translate(0.0, 0.0, slices * 0.5 * 0.5)
|
||||
for (i in 0 until sliceVBs.size) {
|
||||
drawer.vertexBuffer(sliceVBs[i], DrawPrimitive.TRIANGLES)
|
||||
drawer.translate(0.0, 0.0, -0.5)
|
||||
}
|
||||
drawer.translate(0.0, 0.0, slices * 0.5 * 0.5)
|
||||
for (i in 0 until sliceVBs.size) {
|
||||
drawer.vertexBuffer(sliceVBs[i], DrawPrimitive.TRIANGLES)
|
||||
drawer.translate(0.0, 0.0, -0.5)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,71 +17,69 @@ import kotlin.math.PI
|
||||
* Demonstrate decal generation and rendering
|
||||
* @see <img src="https://raw.githubusercontent.com/openrndr/orx/media/orx-mesh-generators/images/decal-DemoDecal02Kt.png">
|
||||
*/
|
||||
fun main() {
|
||||
application {
|
||||
configure {
|
||||
width = 720
|
||||
height = 720
|
||||
fun main() = application {
|
||||
configure {
|
||||
width = 720
|
||||
height = 720
|
||||
}
|
||||
program {
|
||||
/** base object */
|
||||
val obj = loadOBJMeshData(File("demo-data/obj-models/suzanne/Suzanne.obj"))
|
||||
.toMeshData() // convert from CompoundMeshData to MeshData
|
||||
.triangulate() // convert to triangles, we need this for the decal generation steps
|
||||
|
||||
/** object [VertexBuffer] */
|
||||
val objVB = obj.toVertexBuffer()
|
||||
|
||||
|
||||
/** positions for the decal projectors */
|
||||
val decalPositions = listOf(
|
||||
Vector3(0.35, 0.245, 0.8),
|
||||
Vector3(-0.35, 0.245, 0.8)
|
||||
)
|
||||
|
||||
/** decal vertex buffers */
|
||||
val decalVBs = decalPositions.map {
|
||||
val projector = buildTransform {
|
||||
translate(it)
|
||||
}
|
||||
val decal = obj.decal(projector, Vector3(2.0, 2.0, 0.5))
|
||||
val vb = decal.toVertexBuffer()
|
||||
vb
|
||||
}
|
||||
program {
|
||||
/** base object */
|
||||
val obj = loadOBJMeshData(File("demo-data/obj-models/suzanne/Suzanne.obj"))
|
||||
.toMeshData() // convert from CompoundMeshData to MeshData
|
||||
.triangulate() // convert to triangles, we need this for the decal generation steps
|
||||
|
||||
/** object [VertexBuffer] */
|
||||
val objVB = obj.toVertexBuffer()
|
||||
|
||||
|
||||
/** positions for the decal projectors */
|
||||
val decalPositions = listOf(
|
||||
Vector3(0.35, 0.245, 0.8),
|
||||
Vector3(-0.35, 0.245, 0.8)
|
||||
)
|
||||
|
||||
/** decal vertex buffers */
|
||||
val decalVBs = decalPositions.map {
|
||||
val projector = buildTransform {
|
||||
translate(it)
|
||||
extend(Orbital()) {
|
||||
eye = Vector3(0.0, 0.0, 2.0)
|
||||
}
|
||||
extend {
|
||||
/* draw the base mesh */
|
||||
drawer.isolated {
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """x_fill.rgb = vec3(v_viewNormal * 0.5 + 0.5); """
|
||||
}
|
||||
val decal = obj.decal(projector, Vector3(2.0, 2.0, 0.5))
|
||||
val vb = decal.toVertexBuffer()
|
||||
vb
|
||||
drawer.vertexBuffer(objVB, DrawPrimitive.TRIANGLES)
|
||||
}
|
||||
|
||||
extend(Orbital()) {
|
||||
eye = Vector3(0.0, 0.0, 2.0)
|
||||
}
|
||||
extend {
|
||||
/* draw the base mesh */
|
||||
drawer.isolated {
|
||||
/* draw the decals */
|
||||
drawer.isolated {
|
||||
for ((index, decal) in decalVBs.withIndex()) {
|
||||
/* offset the projection transform to avoid z-fighting */
|
||||
drawer.projection = buildTransform {
|
||||
translate(0.0, 0.0, -1e-4)
|
||||
} * drawer.projection
|
||||
|
||||
/* draw effects on the decal geometry */
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """x_fill.rgb = vec3(v_viewNormal * 0.5 + 0.5); """
|
||||
}
|
||||
drawer.vertexBuffer(objVB, DrawPrimitive.TRIANGLES)
|
||||
}
|
||||
|
||||
/* draw the decals */
|
||||
drawer.isolated {
|
||||
for ((index, decal) in decalVBs.withIndex()) {
|
||||
/* offset the projection transform to avoid z-fighting */
|
||||
drawer.projection = buildTransform {
|
||||
translate(0.0, 0.0, -1e-4)
|
||||
} * drawer.projection
|
||||
|
||||
/* draw effects on the decal geometry */
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """
|
||||
fragmentTransform = """
|
||||
float d = length(va_texCoord0.xy - vec2(0.5));
|
||||
float sd = smoothstep(-0.01, 0.01, cos(p_time + d * 3.1415 * 2.0 * 10.0));
|
||||
float l = max(0.0, va_normal.z);
|
||||
x_fill = vec4(0.0, 0.0, 0.0, l * sd * 0.5); """
|
||||
parameter("time", seconds * PI * 2 + index * PI)
|
||||
}
|
||||
drawer.vertexBuffer(decal, DrawPrimitive.TRIANGLES)
|
||||
parameter("time", seconds * PI * 2 + index * PI)
|
||||
}
|
||||
drawer.vertexBuffer(decal, DrawPrimitive.TRIANGLES)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user