forked from kscience/visionforge
Wireframe for a cube
This commit is contained in:
parent
4db090c240
commit
c2d15ded20
@ -12,8 +12,10 @@ import info.laht.threekt.cameras.PerspectiveCamera
|
||||
import info.laht.threekt.core.Object3D
|
||||
import info.laht.threekt.external.controls.OrbitControls
|
||||
import info.laht.threekt.geometries.BoxBufferGeometry
|
||||
import info.laht.threekt.geometries.WireframeGeometry
|
||||
import info.laht.threekt.lights.AmbientLight
|
||||
import info.laht.threekt.math.ColorConstants
|
||||
import info.laht.threekt.objects.LineSegments
|
||||
import info.laht.threekt.objects.Mesh
|
||||
import info.laht.threekt.scenes.Scene
|
||||
import org.w3c.dom.Element
|
||||
@ -82,6 +84,8 @@ class ThreeOutput(override val context: Context) : Output<DisplayObject> {
|
||||
material = box["color"].material()
|
||||
}
|
||||
Mesh(geometry, obj["color"].material()).also { mesh ->
|
||||
//TODO replace by edges after adding it to three.kt
|
||||
mesh.add(LineSegments(WireframeGeometry(geometry),Materials.DEFAULT))
|
||||
obj.onChange(this) { _, _, _ ->
|
||||
mesh.updateProperties(obj)
|
||||
mesh.update(obj)
|
||||
@ -98,7 +102,9 @@ class ThreeOutput(override val context: Context) : Output<DisplayObject> {
|
||||
}
|
||||
|
||||
override fun render(obj: DisplayObject, meta: Meta) {
|
||||
buildNode(obj)?.let { scene.add(it) }
|
||||
buildNode(obj)?.let {
|
||||
scene.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
// init {
|
||||
|
@ -1,18 +1,26 @@
|
||||
package hep.dataforge.vis.spatial
|
||||
|
||||
import hep.dataforge.meta.EmptyMeta
|
||||
import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.meta.*
|
||||
import hep.dataforge.names.toName
|
||||
import hep.dataforge.vis.DisplayGroup
|
||||
import hep.dataforge.vis.DisplayLeaf
|
||||
import hep.dataforge.vis.DisplayObject
|
||||
|
||||
class Extruded(parent: DisplayObject?, meta: Meta) : DisplayLeaf(parent, TYPE, meta) {
|
||||
|
||||
val shape get() = shape(properties["shape"] ?: error("Shape not defined"))
|
||||
|
||||
companion object {
|
||||
const val TYPE = "geometry.spatial.extruded"
|
||||
|
||||
fun shape(item: MetaItem<*>): Shape2D {
|
||||
return item.node?.getAll("xyPoint".toName())?.map { (_, value) ->
|
||||
Point2D(value.node["x"].number ?: 0, value.node["y"].number ?: 0)
|
||||
} ?: emptyList()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun DisplayGroup.extrude(meta: Meta = EmptyMeta, action: Extruded.() -> Unit = {}) =
|
||||
Extruded(this, meta).apply(action).also { addChild(it) }
|
@ -1 +1,6 @@
|
||||
package hep.dataforge.vis.spatial
|
||||
|
||||
|
||||
data class Point2D(val x: Number, val y: Number)
|
||||
|
||||
typealias Shape2D = List<Point2D>
|
Loading…
Reference in New Issue
Block a user