forked from mrdoob/three.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathskin_and_morph.dae
More file actions
619 lines (605 loc) · 34.6 KB
/
skin_and_morph.dae
File metadata and controls
619 lines (605 loc) · 34.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>gcorson</author>
<authoring_tool>Maya8.5 | ColladaMaya v3.03</authoring_tool>
<comments>Collada Maya Export Options:
bakeTransforms=0;exportPolygonMeshes=1;bakeLighting=0;isSampling=0;
curveConstrainSampling=0;removeStaticCurves=1;exportCameraAsLookat=0;
exportLights=1;exportCameras=1;exportJointsAndSkin=1;
exportAnimations=1;exportTriangles=0;exportInvisibleNodes=0;
exportNormals=1;exportTexCoords=1;
exportVertexColors=1;exportVertexColorsAnimation=0;exportTangents=0;
exportTexTangents=0;exportConstraints=1;exportPhysics=1;exportXRefs=1;
dereferenceXRefs=0;cameraXFov=0;cameraYFov=1</comments>
<source_data>
file:///C:/Documents%20and%20Settings/gcorson/Desktop/Crystal%20Content/AmandaCrush/untitled
</source_data>
</contributor>
<created>2007-04-04T23:08:51Z</created>
<modified>2007-06-21T18:50:45Z</modified>
<unit meter="0.01" name="centimeter"/>
<up_axis>Y_UP</up_axis>
</asset>
<library_materials>
<material id="lambert1" name="lambert2">
<instance_effect url="#lambert1-fx"/>
</material>
</library_materials>
<library_effects>
<effect id="lambert1-fx">
<profile_COMMON>
<technique sid="common">
<lambert>
<emission>
<color>0 0 0 1</color>
</emission>
<ambient>
<color>0 0 0 1</color>
</ambient>
<diffuse>
<color>0.9 0.5 0.5 1</color>
</diffuse>
<transparent opaque="RGB_ZERO">
<color>0 0 0 1</color>
</transparent>
<transparency>
<float>1</float>
</transparency>
<index_of_refraction>
<float>1</float>
</index_of_refraction>
</lambert>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_geometries>
<!--
*******************************************************************************************
This is a pretty standard mesh for the same as used in the skinning example. It's a 6
sided cylinder divided into 6 sections with a total of 42 vertices. It is used as the
base mesh (source) in the morph controller.
*******************************************************************************************
-->
<geometry id="pCylinderShape1" name="pCylinderShape1">
<mesh>
<source id="pCylinderShape1-positions" name="position">
<float_array id="pCylinderShape1-positions-array" count="126">20 -90 -34.641
-20 -90 -34.641 -40 -90 -0.000005 -20 -90 34.641 20 -90 34.641 40 -90 0 20 -60 -34.641
-20 -60 -34.641 -40 -60 -0.000005 -20 -60 34.641 20 -60 34.641 40 -60 0 20 -30 -34.641
-20 -30 -34.641 -40 -30 -0.000005 -20 -30 34.641 20 -30 34.641 40 -30 0 20 0 -34.641
-20 0 -34.641 -40 0 -0.000005 -20 0 34.641 20 0 34.641 40 0 0 20 30 -34.641 -20 30 -34.641
-40 30 -0.000005 -20 30 34.641 20 30 34.641 40 30 0 20 60 -34.641 -20 60 -34.641
-40 60 -0.000005 -20 60 34.641 20 60 34.641 40 60 0 20 90 -34.641 -20 90 -34.641
-40 90 -0.000005 -20 90 34.641 20 90 34.641 40 90 0</float_array>
<technique_common>
<accessor source="#pCylinderShape1-positions-array" count="42" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="pCylinderShape1-normals" name="normal">
<float_array id="pCylinderShape1-normals-array" count="468">0 0 -1 0 0 -1
0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1
0 0 1 0 0 1 0.866026 0 0.5 0.866026 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026
0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0
0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026
0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025
0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026
0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026
0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025
0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026
0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026
0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866025
0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026
0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026
0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866025
0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1
0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0
0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 0.5 0.866026
0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0
-1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0</float_array>
<technique_common>
<accessor source="#pCylinderShape1-normals-array" count="156" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="pCylinderShape1-map1" name="map1">
<float_array id="pCylinderShape1-map1-array" count="122">0.578125 0.020933
0.421875 0.020933 0.34375 0.15625 0.421875 0.291566 0.578125 0.291566 0.65625 0.15625
0.375 0.3125 0.416667 0.3125 0.458333 0.3125 0.5 0.3125 0.541667 0.3125 0.583333
0.3125 0.625 0.3125 0.375 0.375157 0.416667 0.375157 0.458333 0.375157 0.5 0.375157
0.541667 0.375157 0.583333 0.375157 0.625 0.375157 0.375 0.437813 0.416667 0.437813
0.458333 0.437813 0.5 0.437813 0.541667 0.437813 0.583333 0.437813 0.625 0.437813
0.375 0.50047 0.416667 0.50047 0.458333 0.50047 0.5 0.50047 0.541667 0.50047 0.583333
0.50047 0.625 0.50047 0.375 0.563127 0.416667 0.563127 0.458333 0.563127 0.5 0.563127
0.541667 0.563127 0.583333 0.563127 0.625 0.563127 0.375 0.625783 0.416667 0.625783
0.458333 0.625783 0.5 0.625783 0.541667 0.625783 0.583333 0.625783 0.625 0.625783
0.375 0.68844 0.416667 0.68844 0.458333 0.68844 0.5 0.68844 0.541667 0.68844 0.583333
0.68844 0.625 0.68844 0.578125 0.708434 0.421875 0.708434 0.34375 0.84375 0.421875
0.979066 0.578125 0.979066 0.65625 0.84375</float_array>
<technique_common>
<accessor source="#pCylinderShape1-map1-array" count="61" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="pCylinderShape1-vertices">
<input semantic="POSITION" source="#pCylinderShape1-positions"/>
</vertices>
<polylist material="lambert2SG" count="38">
<input semantic="VERTEX" source="#pCylinderShape1-vertices" offset="0"/>
<input semantic="NORMAL" source="#pCylinderShape1-normals" offset="1"/>
<input semantic="TEXCOORD" source="#pCylinderShape1-map1" offset="2" set="0"/>
<vcount>4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 6 6</vcount>
<p>0 0 6 1 1 7 7 2 14 6 3 13 1 4 7 2 5 8 8 6 15 7 7 14 2 8 8 3 9 9 9 10
16 8 11 15 3 12 9 4 13 10 10 14 17 9 15 16 4 16 10 5 17 11 11 18 18 10 19 17 5
20 11 0 21 12 6 22 19 11 23 18 6 24 13 7 25 14 13 26 21 12 27 20 7 28 14 8 29 15 14
30 22 13 31 21 8 32 15 9 33 16 15 34 23 14 35 22 9 36 16 10 37 17 16 38 24 15
39 23 10 40 17 11 41 18 17 42 25 16 43 24 11 44 18 6 45 19 12 46 26 17 47 25 12
48 20 13 49 21 19 50 28 18 51 27 13 52 21 14 53 22 20 54 29 19 55 28 14 56 22 15
57 23 21 58 30 20 59 29 15 60 23 16 61 24 22 62 31 21 63 30 16 64 24 17 65 25 23
66 32 22 67 31 17 68 25 12 69 26 18 70 33 23 71 32 18 72 27 19 73 28 25 74 35 24
75 34 19 76 28 20 77 29 26 78 36 25 79 35 20 80 29 21 81 30 27 82 37 26 83 36 21
84 30 22 85 31 28 86 38 27 87 37 22 88 31 23 89 32 29 90 39 28 91 38 23 92 32 18
93 33 24 94 40 29 95 39 24 96 34 25 97 35 31 98 42 30 99 41 25 100 35 26 101 36 32
102 43 31 103 42 26 104 36 27 105 37 33 106 44 32 107 43 27 108 37 28 109 38 34
110 45 33 111 44 28 112 38 29 113 39 35 114 46 34 115 45 29 116 39 24 117 40 30
118 47 35 119 46 30 120 41 31 121 42 37 122 49 36 123 48 31 124 42 32 125 43 38
126 50 37 127 49 32 128 43 33 129 44 39 130 51 38 131 50 33 132 44 34 133 45 40
134 52 39 135 51 34 136 45 35 137 46 41 138 53 40 139 52 35 140 46 30 141 47 36
142 54 41 143 53 0 144 0 5 145 5 4 146 4 3 147 3 2 148 2 1 149 1 36 150 59 37
151 58 38 152 57 39 153 56 40 154 55 41 155 60</p>
</polylist>
</mesh>
</geometry>
<!--
*******************************************************************************************
This mesh is the same as the one above, but one of the rings of verticies has been moved
outwards to create a bulge in the middle of the cylinder. This geometry is used as the
morph target (aka deformer or blend shape) in the morph controller.
A morph can operate on ANY or ALL of the sources so you could morph positions, UVs and
normals all at the same time. The sources to be morphed have to be referenced by <input>
tags inside the <vertices> tag in both the morph target and the base mesh. In this example
only the positions are referenced by the <vertices> tag so they are all this morph will effect.
Since only the positions are being morphed, everything but the target__pCylinderShape1-positions
source and the <vertices> tag could be deleted from this <geometry> and it the morph
should still work. The DCC tool should get all the other information from the base mesh, so
there is no need to duplicate it here.
This extra information may still be exported by some DCC tools for a variety of reasons.
The only time it is actually REQUIRED is if the morph target geometry is also instantiated in
the scene by having an <instance_geometry> tag point directly to it's geometry tag.
Due to a bug in the ColladaMaya Maya expects the polylist information to be present in the
morph target or the morph will not be instantiated.
*******************************************************************************************
-->
<geometry id="target__pCylinderShape1" name="target__pCylinderShape1">
<mesh>
<source id="target__pCylinderShape1-positions" name="position">
<float_array id="target__pCylinderShape1-positions-array" count="126">20 -90 -34.641
-20 -90 -34.641 -40 -90 -0.000005 -20 -90 34.641 20 -90 34.641 40 -90 0 20 -60 -34.641
-20 -60 -34.641 -40 -60 -0.000005 -20 -60 34.641 20 -60 34.641 40 -60 0 20 -30 -34.641
-20 -30 -34.641 -40 -30 -0.000005 -20 -30 34.641 20 -30 34.641 40 -30 0 20 0 -34.641
-20 0 -34.641 -40 0 -0.000005 -20 0 34.641 20 0 34.641 40 0 0 32.6396 30 -69.7557
-32.6396 30 -69.7557 -65.2792 30 -0.00001 -32.6396 30 69.7557 32.6396 30 69.7557
65.2792 30 0 20 60 -34.641 -20 60 -34.641 -40 60 -0.000005 -20 60 34.641 20 60 34.641
40 60 0 20 90 -34.641 -20 90 -34.641 -40 90 -0.000005 -20 90 34.641 20 90 34.641
40 90 0</float_array>
<technique_common>
<accessor source="#target__pCylinderShape1-positions-array" count="42" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="target__pCylinderShape1-normals" name="normal">
<float_array id="target__pCylinderShape1-normals-array" count="468">0 0 -1
0 0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1
0 0 1 0 0 1 0.866026 0 0.5 0.866026 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026
0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1
-0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026
0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1
0.866025 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026
0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026
0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025
0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026
0 -0.5 0.866026 0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026
0 0.5 -0.866026 0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866025
0 0.5 0.866025 0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026
0 -0.5 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866025 0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026
0 0.5 0 0 1 0 0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866025 0 0.5 0.866025
0 0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 0 -1 0
0 -1 0 0 -1 0 0 -1 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025 0 -0.5 -0.866025
0 -0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 -0.866026 0 0.5 0 0 1 0
0 1 0 0 1 0 0 1 0.866025 0 0.5 0.866025 0 0.5 0.866026 0 0.5 0.866026 0 0.5 0.866026
0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0.866026 0 -0.5 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0
-1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0</float_array>
<technique_common>
<accessor source="#target__pCylinderShape1-normals-array" count="156" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="target__pCylinderShape1-map1" name="map1">
<float_array id="target__pCylinderShape1-map1-array" count="122">0.578125 0.020933
0.421875 0.020933 0.34375 0.15625 0.421875 0.291566 0.578125 0.291566 0.65625 0.15625 0.375
0.3125 0.416667 0.3125 0.458333 0.3125 0.5 0.3125 0.541667 0.3125 0.583333 0.3125 0.625
0.3125 0.375 0.375157 0.416667 0.375157 0.458333 0.375157 0.5 0.375157 0.541667 0.375157
0.583333 0.375157 0.625 0.375157 0.375 0.437813 0.416667 0.437813 0.458333 0.437813 0.5
0.437813 0.541667 0.437813 0.583333 0.437813 0.625 0.437813 0.375 0.50047 0.416667 0.50047
0.458333 0.50047 0.5 0.50047 0.541667 0.50047 0.583333 0.50047 0.625 0.50047 0.375
0.563127 0.416667 0.563127 0.458333 0.563127 0.5 0.563127 0.541667 0.563127 0.583333
0.563127 0.625 0.563127 0.375 0.625783 0.416667 0.625783 0.458333 0.625783 0.5 0.625783
0.541667 0.625783 0.583333 0.625783 0.625 0.625783 0.375 0.68844 0.416667 0.68844
0.458333 0.68844 0.5 0.68844 0.541667 0.68844 0.583333 0.68844 0.625 0.68844 0.578125
0.708434 0.421875 0.708434 0.34375 0.84375 0.421875 0.979066 0.578125 0.979066 0.65625
0.84375</float_array>
<technique_common>
<accessor source="#target__pCylinderShape1-map1-array" count="61" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="target__pCylinderShape1-vertices">
<input semantic="POSITION" source="#target__pCylinderShape1-positions"/>
</vertices>
<polylist material="target__lambert2SG" count="38">
<input semantic="VERTEX" source="#target__pCylinderShape1-vertices" offset="0"/>
<input semantic="NORMAL" source="#target__pCylinderShape1-normals" offset="1"/>
<input semantic="TEXCOORD" source="#target__pCylinderShape1-map1" offset="2" set="0"/>
<vcount>4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 6 6</vcount>
<p>0 0 6 1 1 7 7 2 14 6 3 13 1 4 7 2 5 8 8 6 15 7 7 14 2 8 8 3 9 9 9 10 16 8 11
15 3 12 9 4 13 10 10 14 17 9 15 16 4 16 10 5 17 11 11 18 18 10 19 17 5 20 11 0 21 12 6
22 19 11 23 18 6 24 13 7 25 14 13 26 21 12 27 20 7 28 14 8 29 15 14 30 22 13 31 21 8
32 15 9 33 16 15 34 23 14 35 22 9 36 16 10 37 17 16 38 24 15 39 23 10 40 17 11 41 18 17
42 25 16 43 24 11 44 18 6 45 19 12 46 26 17 47 25 12 48 20 13 49 21 19 50 28 18
51 27 13 52 21 14 53 22 20 54 29 19 55 28 14 56 22 15 57 23 21 58 30 20 59 29 15
60 23 16 61 24 22 62 31 21 63 30 16 64 24 17 65 25 23 66 32 22 67 31 17 68 25 12
69 26 18 70 33 23 71 32 18 72 27 19 73 28 25 74 35 24 75 34 19 76 28 20 77 29 26
78 36 25 79 35 20 80 29 21 81 30 27 82 37 26 83 36 21 84 30 22 85 31 28 86 38 27
87 37 22 88 31 23 89 32 29 90 39 28 91 38 23 92 32 18 93 33 24 94 40 29 95 39 24
96 34 25 97 35 31 98 42 30 99 41 25 100 35 26 101 36 32 102 43 31 103 42 26 104 36 27
105 37 33 106 44 32 107 43 27 108 37 28 109 38 34 110 45 33 111 44 28 112 38 29
113 39 35 114 46 34 115 45 29 116 39 24 117 40 30 118 47 35 119 46 30 120 41 31
121 42 37 122 49 36 123 48 31 124 42 32 125 43 38 126 50 37 127 49 32 128 43 33
129 44 39 130 51 38 131 50 33 132 44 34 133 45 40 134 52 39 135 51 34 136 45 35
137 46 41 138 53 40 139 52 35 140 46 30 141 47 36 142 54 41 143 53 0 144 0 5
145 5 4 146 4 3 147 3 2 148 2 1 149 1 36 150 59 37 151 58 38 152 57 39 153 56 40
154 55 41 155 60</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<!--
*******************************************************************************************
This controller defines a morph with pCylinderShape1 as the source and
target_pCylinderShape1 as the morph target (deformer)
*******************************************************************************************
-->
<controller id="pCylinderShape1-morph" name="blendShape1">
<morph method="NORMALIZED" source="#pCylinderShape1">
<!--
*******************************************************************************************
This source lists all the morph targets that will be used by this controller. In this
case there is just one, but there could be as many as you like. Multiple targets are
commonly used to apply facial expressions to characters. There would a "happy" morph,
a "sad" one, an excited one...etc. Which could be mixed so you could make an expression
that was half sad, half excited...etc.
*******************************************************************************************
-->
<source id="pCylinderShape1-morph-targets">
<IDREF_array id="pCylinderShape1-morph-targets-array" count="1">target__pCylinderShape1</IDREF_array>
<technique_common>
<accessor source="#pCylinderShape1-morph-targets-array" count="1" stride="1">
<param name="MORPH_TARGET" type="IDREF"/>
</accessor>
</technique_common>
</source>
<!--
*******************************************************************************************
This source contains the weights to be applied to each morph target (in this case just one)
A weight of 1 means the morph is fully applied. This can be animated.
*******************************************************************************************
-->
<source id="pCylinderShape1-morph-morph_weights">
<float_array id="pCylinderShape1-morph-morph_weights-array" count="1">1</float_array>
<technique_common>
<accessor source="#pCylinderShape1-morph-morph_weights-array" count="1" stride="1">
<param name="MORPH_WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<!--
*******************************************************************************************
The inputs in the targets tag point to the sources containing the list of morph targets and
the list of corrisponding weights.
*******************************************************************************************
-->
<targets>
<input semantic="MORPH_TARGET" source="#pCylinderShape1-morph-targets"/>
<input semantic="MORPH_WEIGHT" source="#pCylinderShape1-morph-morph_weights"/>
</targets>
</morph>
</controller>
<!--
*******************************************************************************************
This controller defines how to skin the geometry that comes out of the morph controller.
*******************************************************************************************
-->
<controller id="pCylinderShape1-morph-skin" name="skinCluster1">
<!--
*******************************************************************************************
A regular skin controller would point at a geometry we wanted to skin. In this case we are
taking the output of a morph controller (which is geometry) and skinning that.
*******************************************************************************************
-->
<skin source="#pCylinderShape1">
<!--
*******************************************************************************************
The bind shape matrix describes how to transform the pCylinderShape1-morph geometry into the
right coordinate system for use with the joints. In this case we do an +90 Y transform because
the geometry was initially a 180 unit long cylinder with 0,0,0 at it's center.
This moves it so 0,0,0 is at the base of the cylinder.
*******************************************************************************************
-->
<bind_shape_matrix>
1 0 0 0
0 1 0 90
0 0 1 0
0 0 0 1
</bind_shape_matrix>
<!--
*******************************************************************************************
This source contains a list of the SIDs of the 7 joints that will influence the skin. You
can also use an IDREF_Array here but use of SIDs is prefered because they allow a controller
to be used several times with different skeletons. Applications MUST be able to import either
IDREF_Array or Name_array tags. And MUST search the correct namespace for the ID or SID
*******************************************************************************************
-->
<source id="pCylinderShape1-morph-skin-joints">
<Name_array id="pCylinderShape1-morph-skin-joints-array" count="7">
joint1 joint2 joint3 joint4 joint5 joint6 joint7</Name_array>
<technique_common>
<accessor source="#pCylinderShape1-morph-skin-joints-array" count="7" stride="1">
<param name="JOINT" type="Name"/>
</accessor>
</technique_common>
</source>
<!--
*******************************************************************************************
This source defines the inverse bind matrix for each joint, these are used to bring
coordinates being skinned into the same space as each joint. Note that in this case the
joints begin at 0,0,0 and move up 30 units for each joint, so the inverse bind matrices
are the opposite of that.
*******************************************************************************************
-->
<source id="pCylinderShape1-morph-skin-bind_poses">
<float_array id="pCylinderShape1-morph-skin-bind_poses-array" count="112">
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -30
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -60
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -90
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -120
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -150
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 -180
0 0 1 0
0 0 0 1
</float_array>
<technique_common>
<accessor source="#pCylinderShape1-morph-skin-bind_poses-array" count="7" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<!--
*******************************************************************************************
This source defines a weight for each vertex and each joint. The weight defines how much
a particular joint will contribute to moving a particular vertex's position. This allows
several joints to influence vertices by different amounts, giving a nice smooth bend.
Since there are 42 vertices and 7 joints there should be at most 294 weights. In this case
the skinning algorithm was told that each vertex should be effected by the 5 nearest joints
so we have 5 weights per vertex giving a total of 210. Maya has thrown in an extra weight
of 1 at the beginning giving us a total of 211.
Weights 1-6 will be applied to the first vertex, you can see how they work. The first weight
represents the closest joint to the vertex and has the largest value, the remaining 4 weights
get smaller and smaller as the associated joint gets farther from the vertex.
*******************************************************************************************
-->
<source id="pCylinderShape1-morph-skin-weights">
<float_array id="pCylinderShape1-morph-skin-weights-array" count="211">
1 0.648726 0.265718 0.061417 0.01765 0.006487 0.648726 0.265718 0.061417 0.01765 0.006487
0.648726 0.265718 0.061417 0.01765 0.006487 0.648726 0.265718 0.061417 0.01765 0.006487
0.648726 0.265718 0.061417 0.01765 0.006487 0.648726 0.265718 0.061417 0.01765 0.006487
0.395025 0.395025 0.161802 0.037398 0.010747 0.395025 0.395025 0.161802 0.037398 0.010747
0.395025 0.395025 0.161802 0.037398 0.010747 0.395025 0.395025 0.161802 0.037398 0.010747
0.395025 0.395025 0.161802 0.037398 0.010747 0.395025 0.395025 0.161802 0.037398 0.010747
0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569 0.032491
0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569 0.032491
0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569 0.032491
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569 0.032491
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.032491 0.140569 0.343186 0.343186 0.140569 0.032491 0.140569 0.343186 0.343186 0.140569
0.010747 0.037398 0.161802 0.395025 0.395025 0.010747 0.037398 0.161802 0.395025 0.395025
0.010747 0.037398 0.161802 0.395025 0.395025 0.010747 0.037398 0.161802 0.395025 0.395025
0.010747 0.037398 0.161802 0.395025 0.395025 0.010747 0.037398 0.161802 0.395025 0.395025</float_array>
<technique_common>
<accessor source="#pCylinderShape1-morph-skin-weights-array" count="211" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<!--
*******************************************************************************************
The joints tag connects the source containing the name of each joint with the source
containing the inverse bind matrices for each joint.
*******************************************************************************************
-->
<joints>
<input semantic="JOINT" source="#pCylinderShape1-morph-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#pCylinderShape1-morph-skin-bind_poses"/>
</joints>
<!--
*******************************************************************************************
The vertex_weights tag associates the weights and joints from the previously defined
sources with the vertices in the geometry being skinned. Each entry in this list matches
a vertex in the original geometry, so the count here should be the same as the count
in the geometry being skinned.
Each weight/joint pair is referred to as an "influence", a vertex can have any number of
influences applied to it. The <vcount> value for a vertex defines the number of influences
on that vertex. In this case every vertex has 5 influences. The values in the <v> array
are the indices of the joint and weight that make up that influence.
*******************************************************************************************
-->
<vertex_weights count="42">
<input semantic="JOINT" source="#pCylinderShape1-morph-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#pCylinderShape1-morph-skin-weights" offset="1"/>
<vcount>5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 </vcount>
<v>0 1 1 2 2 3 3 4 4 5 0 6 1 7 2 8 3 9 4 10 0 11 1 12 2 13 3 14 4 15 0 16 1
17 2 18 3 19 4 20 0 21 1 22 2 23 3 24 4 25 0 26 1 27 2 28 3 29 4 30 0 31 1 32 2 33 3
34 4 35 0 36 1 37 2 38 3 39 4 40 0 41 1 42 2 43 3 44 4 45 0 46 1 47 2 48 3 49 4 50 0
51 1 52 2 53 3 54 4 55 0 56 1 57 2 58 3 59 4 60 0 61 1 62 2 63 3 64 4 65 0 66 1 67 2
68 3 69 4 70 0 71 1 72 2 73 3 74 4 75 0 76 1 77 2 78 3 79 4 80 0 81 1 82 2 83 3 84 4
85 0 86 1 87 2 88 3 89 4 90 0 91 1 92 2 93 3 94 4 95 0 96 1 97 2 98 3 99 4 100 0 101 1
102 2 103 3 104 4 105 0 106 1 107 2 108 3 109 4 110 0 111 1 112 2 113 3 114 4 115 0
116 1 117 2 118 3 119 4 120 2 121 3 122 4 123 5 124 6 125 2 126 3 127 4 128 5 129 6
130 1 131 2 132 3 133 4 134 5 135 1 136 2 137 3 138 4 139 5 140 1 141 2 142 3 143 4
144 5 145 1 146 2 147 3 148 4 149 5 150 2 151 3 152 4 153 5 154 6 155 2 156 3 157 4
158 5 159 6 160 2 161 3 162 4 163 5 164 6 165 2 166 3 167 4 168 5 169 6 170 2 171 3
172 4 173 5 174 6 175 2 176 3 177 4 178 5 179 6 180 2 181 3 182 4 183 5 184 6 185 2
186 3 187 4 188 5 189 6 190 2 191 3 192 4 193 5 194 6 195 2 196 3 197 4 198 5 199 6
200 2 201 3 202 4 203 5 204 6 205 2 206 3 207 4 208 5 209 6 210</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="VisualSceneNode" name="untitled">
<!--
*******************************************************************************************
This is the node hierarchy that represents the skeleton of the skinned object.
The first node has an ID to act as a starting point for SID searches, the rest
of the nodes in the hierarchy only need SIDs. It is preferable to use SIDs to
identify the joints of the skeleton because it allows the skin controller to be
used several times with different skeletons. For example we could have a second
joint hierarchy using the same SIDs but with a different id (like skeleton2_root)
on the first node and different transforms.
In this example the root joint of the skeleton is 20 units above the ground.
All the other joints are 30 units apart in the Y direction. A Z rotation has been
added to some of the joints to cause the skinned/morphed cylinder to gradually bend so
you can see the skinning effect.
*******************************************************************************************
-->
<node id="skeleton_root" name="joint1" sid="joint1" type="JOINT">
<translate sid="translate">0 20 0</translate>
<!--
*******************************************************************************************
Some people try to put the instance_controller here. This will not work correctly for
a skin because the skinning process has already transformed all the vertices using the
full transform in the joints that the skin controller references. This means the data
coming out of the instance_controller is effectively in world space. If we put the
instance_controller here, the geometry coming out of it would be transformed (again) by
this node, moving it up an additional 20 units.
*******************************************************************************************
-->
<node name="joint2" sid="joint2" type="JOINT">
<translate>0 30 0</translate>
<node name="joint3" sid="joint3" type="JOINT">
<translate>0 30 0</translate>
<rotate>0 0 1 17.972</rotate>
<node name="joint4" sid="joint4" type="JOINT">
<translate>0 30 0</translate>
<rotate>0 0 1 16.4036</rotate>
<node name="joint5" sid="joint5" type="JOINT">
<translate>0 30 0</translate>
<rotate>0 0 1 21.1126</rotate>
<node name="joint6" sid="joint6" type="JOINT">
<translate>0 30 0</translate>
<rotate>0 0 1 16.007</rotate>
<node name="joint7" sid="joint7" type="JOINT">
<translate>0 30 0</translate>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<!--
*******************************************************************************************
This node is where the skinned/morphed geometry is instantiated. The geometry that comes out
of a skin controller has already been transformed by the joints referenced in the skin
which puts the geometry in world space. This is why we are instantiating the skin at
the root of the hierarchy rather than up in the "skeleton_root" node
*******************************************************************************************
-->
<node id="pCylinder1" name="pCylinder1" type="NODE">
<instance_controller url="#pCylinderShape1-morph-skin">
<!--
*******************************************************************************************
The skeleton tag tells the controller where it should start searching for any SIDs found
in the skin. This allows the same controller to be re-used with different joint hierarchies.
If the controller uses an IDREF_Array then the skeleton tag is not required because IDs are
global.
*******************************************************************************************
-->
<skeleton>#skeleton_root</skeleton>
<bind_material>
<technique_common>
<instance_material symbol="lambert2SG" target="#lambert1"/>
</technique_common>
</bind_material>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#VisualSceneNode"/>
</scene>
</COLLADA>