[orx-mesh, orx-obj-loader] Separate into commonMain and jvmMain
This commit is contained in:
15
orx-obj-loader/src/jvmDemo/kotlin/DemoObjCompoundRW01.kt
Normal file
15
orx-obj-loader/src/jvmDemo/kotlin/DemoObjCompoundRW01.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
import org.openrndr.application
|
||||
import org.openrndr.extra.objloader.loadOBJMeshData
|
||||
import org.openrndr.extra.objloader.toObj
|
||||
import java.io.File
|
||||
|
||||
fun main() {
|
||||
application {
|
||||
program {
|
||||
val path = "demo-data/obj-models"
|
||||
val cm = loadOBJMeshData(File("$path/suzanne/Suzanne.obj"))
|
||||
|
||||
println(cm.toObj())
|
||||
}
|
||||
}
|
||||
}
|
||||
31
orx-obj-loader/src/jvmDemo/kotlin/DemoObjLoader01.kt
Normal file
31
orx-obj-loader/src/jvmDemo/kotlin/DemoObjLoader01.kt
Normal file
@@ -0,0 +1,31 @@
|
||||
import org.openrndr.application
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.DepthTestPass
|
||||
import org.openrndr.draw.DrawPrimitive
|
||||
import org.openrndr.draw.shadeStyle
|
||||
import org.openrndr.extra.objloader.loadOBJasVertexBuffer
|
||||
import org.openrndr.math.Vector3
|
||||
|
||||
fun main() = application {
|
||||
program {
|
||||
val mesh = loadOBJasVertexBuffer("demo-data/obj-models/suzanne/Suzanne.obj")
|
||||
|
||||
extend {
|
||||
drawer.perspective(60.0, width * 1.0 / height, 0.01, 1000.0)
|
||||
drawer.depthWrite = true
|
||||
drawer.depthTestPass = DepthTestPass.LESS_OR_EQUAL
|
||||
drawer.fill = ColorRGBa.PINK
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """
|
||||
vec3 lightDir = normalize(vec3(0.3, 1.0, 0.5));
|
||||
float l = dot(va_normal, lightDir) * 0.4 + 0.5;
|
||||
x_fill.rgb *= l;
|
||||
""".trimIndent()
|
||||
}
|
||||
drawer.translate(0.0, 0.0, -2.0)
|
||||
drawer.rotate(Vector3.UNIT_X, -seconds * 2 + 30)
|
||||
drawer.rotate(Vector3.UNIT_Y, -seconds * 15 + 20)
|
||||
drawer.vertexBuffer(mesh, DrawPrimitive.TRIANGLES)
|
||||
}
|
||||
}
|
||||
}
|
||||
22
orx-obj-loader/src/jvmDemo/kotlin/DemoObjSaver01.kt
Normal file
22
orx-obj-loader/src/jvmDemo/kotlin/DemoObjSaver01.kt
Normal file
@@ -0,0 +1,22 @@
|
||||
import org.openrndr.application
|
||||
import org.openrndr.draw.loadFont
|
||||
import org.openrndr.extra.objloader.loadOBJasVertexBuffer
|
||||
import org.openrndr.extra.objloader.saveOBJ
|
||||
|
||||
fun main() = application {
|
||||
configure {
|
||||
height = 100
|
||||
}
|
||||
program {
|
||||
val path = "demo-data/obj-models"
|
||||
val mesh = loadOBJasVertexBuffer("$path/suzanne/Suzanne.obj")
|
||||
mesh.saveOBJ("$path/Suzanne-exported.obj")
|
||||
|
||||
val font = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 24.0)
|
||||
|
||||
extend {
|
||||
drawer.fontMap = font
|
||||
drawer.text(".obj file loaded and saved", 10.0, 80.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
35
orx-obj-loader/src/jvmDemo/kotlin/DemoObjSaver02.kt
Normal file
35
orx-obj-loader/src/jvmDemo/kotlin/DemoObjSaver02.kt
Normal file
@@ -0,0 +1,35 @@
|
||||
import org.openrndr.application
|
||||
import org.openrndr.draw.loadFont
|
||||
import org.openrndr.extra.meshgenerators.buildTriangleMesh
|
||||
import org.openrndr.extra.meshgenerators.sphere
|
||||
import org.openrndr.extra.objloader.saveOBJ
|
||||
|
||||
fun main() = application {
|
||||
configure {
|
||||
height = 100
|
||||
}
|
||||
program {
|
||||
val path = "demo-data/obj-models/"
|
||||
val mesh = buildTriangleMesh {
|
||||
repeat(4) { x ->
|
||||
repeat(4) { y ->
|
||||
repeat(4) { z ->
|
||||
isolated {
|
||||
translate(x * 1.0, y * 1.0, z * 1.0)
|
||||
sphere(8, 8,
|
||||
(x * 91 + y * 79 + z * 17).mod(5) * 0.2 + 0.1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mesh.saveOBJ("$path/sphere-composition-exported.obj")
|
||||
|
||||
val font = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 24.0)
|
||||
|
||||
extend {
|
||||
drawer.fontMap = font
|
||||
drawer.text("Mesh generated and .obj file saved", 10.0, 80.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
63
orx-obj-loader/src/jvmDemo/kotlin/DemoWireframe01.kt
Normal file
63
orx-obj-loader/src/jvmDemo/kotlin/DemoWireframe01.kt
Normal file
@@ -0,0 +1,63 @@
|
||||
/**
|
||||
Display wireframe and non-planar faces
|
||||
*/
|
||||
import org.openrndr.WindowMultisample
|
||||
import org.openrndr.application
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.DrawPrimitive
|
||||
import org.openrndr.draw.TransformTarget
|
||||
import org.openrndr.draw.shadeStyle
|
||||
import org.openrndr.extra.camera.Orbital
|
||||
import org.openrndr.extra.objloader.readObjMeshData
|
||||
import org.openrndr.extra.objloader.loadOBJasVertexBuffer
|
||||
import org.openrndr.extra.objloader.wireframe
|
||||
import org.openrndr.math.Vector3
|
||||
import org.openrndr.shape.Path3D
|
||||
import java.io.File
|
||||
import kotlin.math.cos
|
||||
|
||||
fun main() {
|
||||
application {
|
||||
configure {
|
||||
width = 720
|
||||
height = 720
|
||||
multisample = WindowMultisample.SampleCount(4)
|
||||
}
|
||||
program {
|
||||
val vb = loadOBJasVertexBuffer("orx-obj-loader/test-data/non-planar.obj")
|
||||
val md = readObjMeshData(File("orx-obj-loader/test-data/non-planar.obj").readLines())
|
||||
|
||||
val paths = md.wireframe().map {
|
||||
Path3D.fromPoints(it, true)
|
||||
}
|
||||
|
||||
extend(Orbital())
|
||||
extend {
|
||||
drawer.rotate(Vector3.Companion.UNIT_Y, seconds * 45.0 + 45.0, TransformTarget.MODEL)
|
||||
drawer.translate(0.0, 0.0, 9.0, TransformTarget.VIEW)
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
fragmentTransform = """
|
||||
x_fill.rgb = normalize(v_viewNormal) * 0.5 + vec3(0.5);
|
||||
""".trimIndent()
|
||||
}
|
||||
|
||||
drawer.vertexBuffer(vb, DrawPrimitive.TRIANGLES)
|
||||
drawer.stroke = ColorRGBa.WHITE
|
||||
drawer.strokeWeight = 1.0
|
||||
|
||||
drawer.shadeStyle = shadeStyle {
|
||||
vertexTransform = """
|
||||
x_projectionMatrix[3][2] -= 0.001;
|
||||
""".trimIndent()
|
||||
}
|
||||
|
||||
drawer.strokeWeight = 1.0
|
||||
drawer.paths(paths.mapIndexed { index, it ->
|
||||
it.sub(
|
||||
0.0, cos(seconds * 0.5 + index * 0.5) * 0.5 + 0.5
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user