[orx-mesh, orx-mesh-noise] Add orx-mesh-noise
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
/**
|
||||
* Compound mesh data interface
|
||||
@@ -8,6 +8,8 @@ interface ICompoundMeshData {
|
||||
val compounds: Map<String, IMeshData>
|
||||
|
||||
fun triangulate(): ICompoundMeshData
|
||||
|
||||
fun toMeshData(): IMeshData
|
||||
}
|
||||
|
||||
class CompoundMeshData(
|
||||
@@ -15,15 +17,15 @@ class CompoundMeshData(
|
||||
override val compounds: Map<String, MeshData>
|
||||
) : ICompoundMeshData {
|
||||
|
||||
init {
|
||||
|
||||
}
|
||||
|
||||
override fun triangulate(): CompoundMeshData {
|
||||
return CompoundMeshData(vertexData, compounds.mapValues {
|
||||
it.value.triangulate()
|
||||
})
|
||||
}
|
||||
|
||||
override fun toMeshData(): MeshData {
|
||||
return MeshData(vertexData, compounds.values.flatMap { it.polygons })
|
||||
}
|
||||
}
|
||||
|
||||
class MutableCompoundMeshData(
|
||||
@@ -36,6 +38,11 @@ class MutableCompoundMeshData(
|
||||
vertexData,
|
||||
compounds.mapValues {
|
||||
it.value.triangulate()
|
||||
}.toMutableMap())
|
||||
}.toMutableMap()
|
||||
)
|
||||
}
|
||||
|
||||
override fun toMeshData(): IMeshData {
|
||||
return MutableMeshData(vertexData, compounds.values.flatMap { it.polygons }.toMutableList())
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.draw.VertexBuffer
|
||||
import org.openrndr.draw.vertexBuffer
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.math.Matrix44
|
||||
import org.openrndr.math.Vector2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import kotlin.jvm.JvmRecord
|
||||
|
||||
@@ -21,7 +21,10 @@ data class MeshData(
|
||||
override val polygons: List<IndexedPolygon>,
|
||||
) : IMeshData {
|
||||
override fun triangulate(): MeshData {
|
||||
return copy(polygons = polygons.flatMap { polygon -> polygon.triangulate(vertexData) })
|
||||
return if (isTriangular()) {
|
||||
this
|
||||
} else
|
||||
copy(polygons = polygons.flatMap { polygon -> polygon.triangulate(vertexData) })
|
||||
}
|
||||
|
||||
override fun toPolygons(): List<Polygon> {
|
||||
@@ -40,7 +43,11 @@ data class MutableMeshData(
|
||||
override val polygons: MutableList<IndexedPolygon>
|
||||
) : IMeshData {
|
||||
override fun triangulate(): MutableMeshData {
|
||||
return copy(polygons = polygons.flatMap { it.triangulate(vertexData) }.toMutableList())
|
||||
return if (isTriangular()) {
|
||||
this
|
||||
} else {
|
||||
copy(polygons = polygons.flatMap { it.triangulate(vertexData) }.toMutableList())
|
||||
}
|
||||
}
|
||||
|
||||
override fun toPolygons(): List<Polygon> {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.VertexBuffer
|
||||
@@ -18,7 +18,14 @@ internal val objVertexFormat = vertexFormat {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a [MeshData] instance into a [VertexBuffer]
|
||||
* Determine if [IMeshData] is triangular by checking if each polygon has exactly 3 vertices
|
||||
*/
|
||||
fun IMeshData.isTriangular(): Boolean {
|
||||
return polygons.all { it.positions.size == 3 }
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a [MeshData] instance into a [VertexBuffer]
|
||||
*/
|
||||
fun IMeshData.toVertexBuffer(elementOffset: Int = 0, vertexBuffer: VertexBuffer? = null): VertexBuffer {
|
||||
val objects = triangulate().toPolygons()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.math.Matrix44
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.math.Vector2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.openrndr.extra.objloader
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.math.Vector3
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.openrndr.extra.mesh
|
||||
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.VertexBuffer
|
||||
import org.openrndr.extra.objloader.Polygon
|
||||
import org.openrndr.extra.objloader.objVertexFormat
|
||||
import org.openrndr.extra.mesh.Polygon
|
||||
import org.openrndr.extra.mesh.objVertexFormat
|
||||
import org.openrndr.math.Vector2
|
||||
import org.openrndr.math.Vector3
|
||||
import java.nio.ByteBuffer
|
||||
|
||||
Reference in New Issue
Block a user