Skip to content

Commit 1a95ad8

Browse files
committed
adding pcd loader
1 parent 3fa9efa commit 1a95ad8

File tree

13 files changed

+912
-1
lines changed

13 files changed

+912
-1
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
# .PCD v.7 - Point Cloud Data file format
2+
VERSION .7
3+
FIELDS x y z rgb
4+
SIZE 4 4 4 4
5+
TYPE F F F F
6+
COUNT 1 1 1 1
7+
WIDTH 213
8+
HEIGHT 1
9+
VIEWPOINT 0 0 0 1 0 0 0
10+
POINTS 213
11+
DATA ascii
12+
0.93773 0.33763 0 4.2108e+06
13+
0.90805 0.35641 0 4.2108e+06
14+
0.81915 0.32 0 4.2108e+06
15+
0.97192 0.278 0 4.2108e+06
16+
0.944 0.29474 0 4.2108e+06
17+
0.98111 0.24247 0 4.2108e+06
18+
0.93655 0.26143 0 4.2108e+06
19+
0.91631 0.27442 0 4.2108e+06
20+
0.81921 0.29315 0 4.2108e+06
21+
0.90701 0.24109 0 4.2108e+06
22+
0.83239 0.23398 0 4.2108e+06
23+
0.99185 0.2116 0 4.2108e+06
24+
0.89264 0.21174 0 4.2108e+06
25+
0.85082 0.21212 0 4.2108e+06
26+
0.81044 0.32222 0 4.2108e+06
27+
0.74459 0.32192 0 4.2108e+06
28+
0.69927 0.32278 0 4.2108e+06
29+
0.8102 0.29315 0 4.2108e+06
30+
0.75504 0.29765 0 4.2108e+06
31+
0.8102 0.24399 0 4.2108e+06
32+
0.74995 0.24723 0 4.2108e+06
33+
0.68049 0.29768 0 4.2108e+06
34+
0.66509 0.29002 0 4.2108e+06
35+
0.69441 0.2526 0 4.2108e+06
36+
0.62807 0.22187 0 4.2108e+06
37+
0.58706 0.32199 0 4.2108e+06
38+
0.52125 0.31955 0 4.2108e+06
39+
0.49351 0.32282 0 4.2108e+06
40+
0.44313 0.32169 0 4.2108e+06
41+
0.58678 0.2929 0 4.2108e+06
42+
0.53436 0.29164 0 4.2108e+06
43+
0.59308 0.24134 0 4.2108e+06
44+
0.5357 0.2444 0 4.2108e+06
45+
0.50043 0.31235 0 4.2108e+06
46+
0.44107 0.29711 0 4.2108e+06
47+
0.50727 0.22193 0 4.2108e+06
48+
0.43957 0.23976 0 4.2108e+06
49+
0.8105 0.21112 0 4.2108e+06
50+
0.73555 0.2114 0 4.2108e+06
51+
0.69907 0.21082 0 4.2108e+06
52+
0.63327 0.21154 0 4.2108e+06
53+
0.59165 0.21201 0 4.2108e+06
54+
0.52477 0.21491 0 4.2108e+06
55+
0.49375 0.21006 0 4.2108e+06
56+
0.4384 0.19632 0 4.2108e+06
57+
0.43425 0.16052 0 4.2108e+06
58+
0.3787 0.32173 0 4.2108e+06
59+
0.33444 0.3216 0 4.2108e+06
60+
0.23815 0.32199 0 4.808e+06
61+
0.3788 0.29315 0 4.2108e+06
62+
0.33058 0.31073 0 4.2108e+06
63+
0.3788 0.24399 0 4.2108e+06
64+
0.30249 0.29189 0 4.2108e+06
65+
0.23492 0.29446 0 4.808e+06
66+
0.29465 0.24399 0 4.2108e+06
67+
0.23514 0.24172 0 4.808e+06
68+
0.18836 0.32277 0 4.808e+06
69+
0.15992 0.32176 0 4.808e+06
70+
0.08642 0.32181 0 4.808e+06
71+
0.039994 0.32283 0 4.808e+06
72+
0.20039 0.31211 0 4.808e+06
73+
0.1417 0.29506 0 4.808e+06
74+
0.20921 0.22332 0 4.808e+06
75+
0.13884 0.24227 0 4.808e+06
76+
0.085123 0.29441 0 4.808e+06
77+
0.048446 0.31279 0 4.808e+06
78+
0.086957 0.24399 0 4.808e+06
79+
0.3788 0.21189 0 4.2108e+06
80+
0.29465 0.19323 0 4.2108e+06
81+
0.23755 0.19348 0 4.808e+06
82+
0.29463 0.16054 0 4.2108e+06
83+
0.23776 0.16054 0 4.808e+06
84+
0.19016 0.21038 0 4.808e+06
85+
0.15704 0.21245 0 4.808e+06
86+
0.08678 0.21169 0 4.808e+06
87+
0.012746 0.32168 0 4.808e+06
88+
-0.075715 0.32095 0 4.808e+06
89+
-0.10622 0.32304 0 4.808e+06
90+
-0.16391 0.32118 0 4.808e+06
91+
0.00088411 0.29487 0 4.808e+06
92+
-0.057568 0.29457 0 4.808e+06
93+
-0.0034333 0.24399 0 4.808e+06
94+
-0.055185 0.24185 0 4.808e+06
95+
-0.10983 0.31352 0 4.808e+06
96+
-0.15082 0.29453 0 4.808e+06
97+
-0.11534 0.22049 0 4.808e+06
98+
-0.15155 0.24381 0 4.808e+06
99+
-0.1912 0.32173 0 4.808e+06
100+
-0.281 0.3185 0 4.808e+06
101+
-0.30791 0.32307 0 4.808e+06
102+
-0.33854 0.32148 0 4.808e+06
103+
-0.21248 0.29805 0 4.808e+06
104+
-0.26372 0.29905 0 4.808e+06
105+
-0.22562 0.24399 0 4.808e+06
106+
-0.25035 0.2371 0 4.808e+06
107+
-0.29941 0.31191 0 4.808e+06
108+
-0.35845 0.2954 0 4.808e+06
109+
-0.29231 0.22236 0 4.808e+06
110+
-0.36101 0.24172 0 4.808e+06
111+
-0.0034393 0.21129 0 4.808e+06
112+
-0.07306 0.21304 0 4.808e+06
113+
-0.10579 0.2099 0 4.808e+06
114+
-0.13642 0.21411 0 4.808e+06
115+
-0.22562 0.19323 0 4.808e+06
116+
-0.24439 0.19799 0 4.808e+06
117+
-0.22591 0.16041 0 4.808e+06
118+
-0.23466 0.16082 0 4.808e+06
119+
-0.3077 0.20998 0 4.808e+06
120+
-0.3413 0.21239 0 4.808e+06
121+
-0.40551 0.32178 0 4.2108e+06
122+
-0.50568 0.3218 0 4.2108e+06
123+
-0.41732 0.30844 0 4.2108e+06
124+
-0.44237 0.28859 0 4.2108e+06
125+
-0.41591 0.22004 0 4.2108e+06
126+
-0.44803 0.24236 0 4.2108e+06
127+
-0.50623 0.29315 0 4.2108e+06
128+
-0.50916 0.24296 0 4.2108e+06
129+
-0.57019 0.22334 0 4.2108e+06
130+
-0.59611 0.32199 0 4.2108e+06
131+
-0.65104 0.32199 0 4.2108e+06
132+
-0.72566 0.32129 0 4.2108e+06
133+
-0.75538 0.32301 0 4.2108e+06
134+
-0.59653 0.29315 0 4.2108e+06
135+
-0.65063 0.29315 0 4.2108e+06
136+
-0.59478 0.24245 0 4.2108e+06
137+
-0.65063 0.24399 0 4.2108e+06
138+
-0.70618 0.29525 0 4.2108e+06
139+
-0.76203 0.31284 0 4.2108e+06
140+
-0.70302 0.24183 0 4.2108e+06
141+
-0.77062 0.22133 0 4.2108e+06
142+
-0.41545 0.21099 0 4.2108e+06
143+
-0.45004 0.19812 0 4.2108e+06
144+
-0.4475 0.1673 0 4.2108e+06
145+
-0.52031 0.21236 0 4.2108e+06
146+
-0.55182 0.21045 0 4.2108e+06
147+
-0.5965 0.21131 0 4.2108e+06
148+
-0.65064 0.2113 0 4.2108e+06
149+
-0.72216 0.21286 0 4.2108e+06
150+
-0.7556 0.20987 0 4.2108e+06
151+
-0.78343 0.31973 0 4.2108e+06
152+
-0.87572 0.32111 0 4.2108e+06
153+
-0.90519 0.32263 0 4.2108e+06
154+
-0.95526 0.34127 0 4.2108e+06
155+
-0.79774 0.29271 0 4.2108e+06
156+
-0.85618 0.29497 0 4.2108e+06
157+
-0.79975 0.24326 0 4.2108e+06
158+
-0.8521 0.24246 0 4.2108e+06
159+
-0.91157 0.31224 0 4.2108e+06
160+
-0.95031 0.29572 0 4.2108e+06
161+
-0.92223 0.2213 0 4.2108e+06
162+
-0.94979 0.24354 0 4.2108e+06
163+
-0.78641 0.21505 0 4.2108e+06
164+
-0.87094 0.21237 0 4.2108e+06
165+
-0.90637 0.20934 0 4.2108e+06
166+
-0.93777 0.21481 0 4.2108e+06
167+
0.22244 -0.0296 0 4.808e+06
168+
0.2704 -0.078167 0 4.808e+06
169+
0.24416 -0.056883 0 4.808e+06
170+
0.27311 -0.10653 0 4.808e+06
171+
0.26172 -0.10653 0 4.808e+06
172+
0.2704 -0.1349 0 4.808e+06
173+
0.24428 -0.15599 0 4.808e+06
174+
0.19017 -0.025297 0 4.808e+06
175+
0.14248 -0.02428 0 4.808e+06
176+
0.19815 -0.037432 0 4.808e+06
177+
0.14248 -0.03515 0 4.808e+06
178+
0.093313 -0.02428 0 4.808e+06
179+
0.044144 -0.02428 0 4.808e+06
180+
0.093313 -0.03515 0 4.808e+06
181+
0.044144 -0.03515 0 4.808e+06
182+
0.21156 -0.17357 0 4.808e+06
183+
0.029114 -0.12594 0 4.2108e+06
184+
0.036583 -0.15619 0 4.2108e+06
185+
0.22446 -0.20514 0 4.808e+06
186+
0.2208 -0.2369 0 4.808e+06
187+
0.2129 -0.208 0 4.808e+06
188+
0.19316 -0.25672 0 4.808e+06
189+
0.14497 -0.27484 0 4.808e+06
190+
0.030167 -0.18748 0 4.2108e+06
191+
0.1021 -0.27453 0 4.808e+06
192+
0.1689 -0.2831 0 4.808e+06
193+
0.13875 -0.28647 0 4.808e+06
194+
0.086993 -0.29568 0 4.808e+06
195+
0.044924 -0.3154 0 4.808e+06
196+
-0.0066125 -0.02428 0 4.808e+06
197+
-0.057362 -0.02428 0 4.808e+06
198+
-0.0066125 -0.03515 0 4.808e+06
199+
-0.057362 -0.03515 0 4.808e+06
200+
-0.10653 -0.02428 0 4.808e+06
201+
-0.15266 -0.025282 0 4.808e+06
202+
-0.10653 -0.03515 0 4.808e+06
203+
-0.16036 -0.037257 0 4.808e+06
204+
0.0083286 -0.1259 0 4.2108e+06
205+
0.0007442 -0.15603 0 4.2108e+06
206+
-0.1741 -0.17381 0 4.808e+06
207+
-0.18502 -0.02954 0 4.808e+06
208+
-0.20707 -0.056403 0 4.808e+06
209+
-0.23348 -0.07764 0 4.808e+06
210+
-0.2244 -0.10653 0 4.808e+06
211+
-0.23604 -0.10652 0 4.808e+06
212+
-0.20734 -0.15641 0 4.808e+06
213+
-0.23348 -0.13542 0 4.808e+06
214+
0.0061083 -0.18729 0 4.2108e+06
215+
-0.066235 -0.27472 0 4.808e+06
216+
-0.17577 -0.20789 0 4.808e+06
217+
-0.10861 -0.27494 0 4.808e+06
218+
-0.15584 -0.25716 0 4.808e+06
219+
-0.0075775 -0.31546 0 4.808e+06
220+
-0.050817 -0.29595 0 4.808e+06
221+
-0.10306 -0.28653 0 4.808e+06
222+
-0.1319 -0.2831 0 4.808e+06
223+
-0.18716 -0.20571 0 4.808e+06
224+
-0.18369 -0.23729 0 4.808e+06
704 KB
Binary file not shown.
1.37 MB
Binary file not shown.
29 KB
Binary file not shown.
20.3 KB
Loading
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import 'dart:async';
2+
import 'dart:math' as math;
3+
import 'package:example/src/gui.dart';
4+
import 'package:example/src/statistics.dart';
5+
import 'package:flutter/material.dart';
6+
import 'package:three_js/three_js.dart' as three;
7+
import 'package:three_js_helpers/three_js_helpers.dart';
8+
9+
class WebglLoaderPcd extends StatefulWidget {
10+
const WebglLoaderPcd({super.key});
11+
12+
@override
13+
createState() => _State();
14+
}
15+
16+
class _State extends State<WebglLoaderPcd> {
17+
List<int> data = List.filled(60, 0, growable: true);
18+
late Timer timer;
19+
late Gui wg;
20+
late three.ThreeJS threeJs;
21+
22+
@override
23+
void initState() {
24+
wg = Gui((){setState(() {});});
25+
timer = Timer.periodic(const Duration(seconds: 1), (t){
26+
setState(() {
27+
data.removeAt(0);
28+
data.add(threeJs.clock.fps);
29+
});
30+
});
31+
threeJs = three.ThreeJS(
32+
onSetupComplete: (){setState(() {});},
33+
setup: setup,
34+
);
35+
super.initState();
36+
}
37+
@override
38+
void dispose() {
39+
timer.cancel();
40+
threeJs.dispose();
41+
three.loading.clear();
42+
super.dispose();
43+
}
44+
45+
@override
46+
Widget build(BuildContext context) {
47+
return Scaffold(
48+
body: Stack(
49+
children: [
50+
threeJs.build(),
51+
Statistics(data: data),
52+
if(threeJs.mounted)Positioned(
53+
top: 20,
54+
right: 20,
55+
child: SizedBox(
56+
height: threeJs.height,
57+
width: 240,
58+
child: wg.render(context)
59+
)
60+
)
61+
],
62+
)
63+
);
64+
}
65+
66+
Future<void> setup() async {
67+
threeJs.scene = three.Scene();
68+
69+
threeJs.camera = three.PerspectiveCamera( 30, threeJs.width / threeJs.height, 0.01, 40 );
70+
threeJs.camera.position.setValues( 0, 0, 1 );
71+
threeJs.scene.add( threeJs.camera );
72+
73+
final controls = three.OrbitControls( threeJs.camera, threeJs.globalKey );
74+
controls.minDistance = 0.5;
75+
controls.maxDistance = 10;
76+
77+
threeJs.scene.add( AxesHelper( 1 ) );
78+
final loader = three.PCDLoader();
79+
80+
Map<String, dynamic> temp = {
81+
'size': 0.001,
82+
'color': 0,
83+
'name': 'binary/Zaghetto.pcd',
84+
'points': null
85+
};
86+
87+
loadPointCloud( file ) async{
88+
final points = await loader.fromAsset( 'assets/models/pcd/$file');
89+
temp = {
90+
'size': points!.material!.size,
91+
'color': points.material!.color,
92+
'name': file,
93+
'points': points
94+
};
95+
96+
points.geometry?.center();
97+
points.geometry?.rotateX( math.pi );
98+
points.name = file;
99+
threeJs.scene.add( points );
100+
}
101+
102+
loadPointCloud( 'binary/Zaghetto.pcd' );
103+
104+
final gui = wg.addFolder('GUI')..open();
105+
106+
gui.addSlider( temp, 'size', 0.001, 0.01, 0.001 );
107+
gui.addColor( temp, 'color' );
108+
gui.addDropDown( temp, 'name', <String>[
109+
'ascii/simple.pcd',
110+
'binary/Zaghetto.pcd',
111+
'binary/Zaghetto_8bit.pcd',
112+
'binary_compressed/pcl_logo.pcd',
113+
])..name = 'type'..onChange( (e){
114+
threeJs.scene.remove( temp['points'] );
115+
loadPointCloud( e );
116+
});
117+
}
118+
}

examples/lib/main.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import 'package:example/loaders/webgl_loader_gcode.dart';
5050
import 'package:example/loaders/webgl_loader_glb.dart';
5151
import 'package:example/loaders/webgl_loader_gltf_3.dart';
5252
import 'package:example/loaders/webgl_loader_md2.dart';
53+
import 'package:example/loaders/webgl_loader_pcd.dart';
5354
import 'package:example/loaders/webgl_loader_ply.dart';
5455
import 'package:example/loaders/webgl_loader_scn.dart';
5556
import 'package:example/loaders/webgl_loader_stl.dart';
@@ -396,6 +397,9 @@ class MyAppState extends State<MyApp> {
396397
'/webgl_loader_collada_kinematics':(BuildContext context) {
397398
return const WebglLoaderColladaKinematics();
398399
},
400+
'/webgl_loader_pcd':(BuildContext context) {
401+
return const WebglLoaderPcd();
402+
},
399403
'/webgl_loader_ply':(BuildContext context) {
400404
return const WebglLoaderPly();
401405
},

examples/lib/src/files_json.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const List<String> filesJson = [
6363
"webgl_loader_collada_skinning",
6464
"webgl_loader_collada_kinematics",
6565
"webgl_loader_ply",
66+
"webgl_loader_pcd",
6667
"webgl_loader_stl",
6768
"webgl_loader_vox",
6869
"webgl_loader_svg",

examples/pubspec.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ dependency_overrides:
5252
url: https://github.com/alex-melnyk/flutter-permission-handler.git
5353
path: permission_handler_apple
5454
file_picker: ^10.1.9
55+
three_js_advanced_loaders:
56+
path: ../packages/three_js_advanced_loaders
5557

5658
flutter:
5759
uses-material-design: true
@@ -79,6 +81,9 @@ flutter:
7981
- assets/models/md2/ogro/skins/
8082
- assets/models/md2/ratamahatta/
8183
- assets/models/md2/ratamahatta/skins/
84+
- assets/models/pcd/ascii/
85+
- assets/models/pcd/binary/
86+
- assets/models/pcd/binary_compressed/
8287
- assets/models/gltf/test/
8388
- assets/models/gltf/
8489
- assets/models/gltf/test/

packages/three_js_advanced_loaders/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.2.5
2+
3+
* Added PCD Loader
4+
15
## 0.2.4
26

37
* Fixed some FBX issues

0 commit comments

Comments
 (0)