MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / FastLoadPly

Class FastLoadPly

src/main/java/trace/graphics/FastLoadPly.kt:13–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11import field.utility.times
12import marc.math.Flann
13
14import java.io.BufferedReader
15import java.io.File
16import java.io.FileNotFoundException
17import java.io.FileReader
18import java.io.IOException
19import java.io.RandomAccessFile
20import java.nio.ByteBuffer
21import java.nio.ByteOrder
22import java.nio.FloatBuffer
23import java.nio.MappedByteBuffer
24import java.nio.channels.FileChannel.MapMode
25import java.util.ArrayList
26
27
28class FastLoadPly(val fn: String) {
29
30 @JvmField
31 var next : FastLoadPly? = null
32
33 private var boundTo: BaseMesh? = null
34
35 private var lp: LoadPly
36
37 var filename: String? = null
38
39 lateinit var positions: FloatBuffer
40 lateinit var color: FloatBuffer
41 lateinit var normal: FloatBuffer
42 lateinit var size: FloatBuffer
43
44 var dirty_positions = false
45 var dirty_color = false
46 var dirty_normal = false
47 var dirty_size = false
48
49
50 data class Point(val at: Vec3, val color: Vec3?, val normal: Vec3?) {
51 }
52
53 init {
54 lp = LoadPly(fn)
55
56 positions = ByteBuffer.allocateDirect(4 * lp.points.size * 3).order(ByteOrder.nativeOrder()).asFloatBuffer()
57 color = ByteBuffer.allocateDirect(4 * lp.points.size * 4).order(ByteOrder.nativeOrder()).asFloatBuffer()
58 normal = ByteBuffer.allocateDirect(4 * lp.points.size * 3).order(ByteOrder.nativeOrder()).asFloatBuffer()
59 size = ByteBuffer.allocateDirect(4 * lp.points.size * 1).order(ByteOrder.nativeOrder()).asFloatBuffer()
60
61 lp.points.forEachIndexed { i, p ->
62
63 positions.put(i * 3 + 0, p.at.x.toFloat())
64 positions.put(i * 3 + 1, p.at.y.toFloat())
65 positions.put(i * 3 + 2, p.at.z.toFloat())
66
67 color.put(i * 4 + 0, p.color?.x?.toFloat() ?: 1f)
68 color.put(i * 4 + 1, p.color?.y?.toFloat() ?: 1f)
69 color.put(i * 4 + 2, p.color?.z?.toFloat() ?: 1f)
70 color.put(i * 4 + 3, 1f)

Callers

nothing calls this directly

Calls 3

LoadPlyClass · 0.85
orderMethod · 0.45
putMethod · 0.45

Tested by

no test coverage detected