初次提交

This commit is contained in:
2022-09-19 18:05:01 +08:00
commit 57051fc44b
5401 changed files with 325410 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="lib" path="lib/jbullet.jar"/>
<classpathentry kind="lib" path="lib/vecmath.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Sample17_7</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bn.Sample17_7"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="com.bn.Sample17_7.Sample17_7_Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>

View File

@@ -0,0 +1,9 @@
precision mediump float;
varying vec2 vTextureCoord;//接收从顶点着色器过来的参数
uniform sampler2D sTexture;//纹理内容数据
void main()
{
//给此片元颜色值
gl_FragColor = texture2D(sTexture, vTextureCoord);
}

View File

@@ -0,0 +1,12 @@
precision mediump float;
//接收从顶点着色器过来的参数
varying vec4 ambient;
varying vec4 diffuse;
varying vec4 specular;
uniform vec4 aColor;
void main()
{
//将计算出的颜色给此片元
//vec4 finalColor=vec4(0.9,0.9,0.9,1.0);
gl_FragColor = aColor*ambient+aColor*specular+aColor*diffuse;//给此片元颜色值
}

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 08:50:45
mtllib head.mtl
#
# object Capsule03
#
v 0.0000 0.6250 -0.0000
v 0.1294 0.6080 -0.0000
v 0.1121 0.6080 -0.0647
v 0.0647 0.6080 -0.1121
v -0.0000 0.6080 -0.1294
v -0.0647 0.6080 -0.1121
v -0.1121 0.6080 -0.0647
v -0.1294 0.6080 -0.0000
v -0.1121 0.6080 0.0647
v -0.0647 0.6080 0.1121
v -0.0000 0.6080 0.1294
v 0.0647 0.6080 0.1121
v 0.1121 0.6080 0.0647
v 0.2500 0.5580 -0.0000
v 0.2165 0.5580 -0.1250
v 0.1250 0.5580 -0.2165
v -0.0000 0.5580 -0.2500
v -0.1250 0.5580 -0.2165
v -0.2165 0.5580 -0.1250
v -0.2500 0.5580 -0.0000
v -0.2165 0.5580 0.1250
v -0.1250 0.5580 0.2165
v -0.0000 0.5580 0.2500
v 0.1250 0.5580 0.2165
v 0.2165 0.5580 0.1250
v 0.3536 0.4786 -0.0000
v 0.3062 0.4786 -0.1768
v 0.1768 0.4786 -0.3062
v -0.0000 0.4786 -0.3536
v -0.1768 0.4786 -0.3062
v -0.3062 0.4786 -0.1768
v -0.3536 0.4786 -0.0000
v -0.3062 0.4786 0.1768
v -0.1768 0.4786 0.3062
v -0.0000 0.4786 0.3536
v 0.1768 0.4786 0.3062
v 0.3062 0.4786 0.1768
v 0.4330 0.3750 -0.0000
v 0.3750 0.3750 -0.2165
v 0.2165 0.3750 -0.3750
v -0.0000 0.3750 -0.4330
v -0.2165 0.3750 -0.3750
v -0.3750 0.3750 -0.2165
v -0.4330 0.3750 -0.0000
v -0.3750 0.3750 0.2165
v -0.2165 0.3750 0.3750
v -0.0000 0.3750 0.4330
v 0.2165 0.3750 0.3750
v 0.3750 0.3750 0.2165
v 0.4830 0.2544 -0.0000
v 0.4183 0.2544 -0.2415
v 0.2415 0.2544 -0.4183
v -0.0000 0.2544 -0.4830
v -0.2415 0.2544 -0.4183
v -0.4183 0.2544 -0.2415
v -0.4830 0.2544 -0.0000
v -0.4183 0.2544 0.2415
v -0.2415 0.2544 0.4183
v -0.0000 0.2544 0.4830
v 0.2415 0.2544 0.4183
v 0.4183 0.2544 0.2415
v 0.5000 0.1250 -0.0000
v 0.4330 0.1250 -0.2500
v 0.2500 0.1250 -0.4330
v -0.0000 0.1250 -0.5000
v -0.2500 0.1250 -0.4330
v -0.4330 0.1250 -0.2500
v -0.5000 0.1250 -0.0000
v -0.4330 0.1250 0.2500
v -0.2500 0.1250 0.4330
v -0.0000 0.1250 0.5000
v 0.2500 0.1250 0.4330
v 0.4330 0.1250 0.2500
v 0.5000 -0.1250 -0.0000
v 0.4330 -0.1250 -0.2500
v 0.2500 -0.1250 -0.4330
v -0.0000 -0.1250 -0.5000
v -0.2500 -0.1250 -0.4330
v -0.4330 -0.1250 -0.2500
v -0.5000 -0.1250 -0.0000
v -0.4330 -0.1250 0.2500
v -0.2500 -0.1250 0.4330
v -0.0000 -0.1250 0.5000
v 0.2500 -0.1250 0.4330
v 0.4330 -0.1250 0.2500
v 0.4830 -0.2544 -0.0000
v 0.4183 -0.2544 -0.2415
v 0.2415 -0.2544 -0.4183
v -0.0000 -0.2544 -0.4830
v -0.2415 -0.2544 -0.4183
v -0.4183 -0.2544 -0.2415
v -0.4830 -0.2544 -0.0000
v -0.4183 -0.2544 0.2415
v -0.2415 -0.2544 0.4183
v -0.0000 -0.2544 0.4830
v 0.2415 -0.2544 0.4183
v 0.4183 -0.2544 0.2415
v 0.4330 -0.3750 -0.0000
v 0.3750 -0.3750 -0.2165
v 0.2165 -0.3750 -0.3750
v -0.0000 -0.3750 -0.4330
v -0.2165 -0.3750 -0.3750
v -0.3750 -0.3750 -0.2165
v -0.4330 -0.3750 -0.0000
v -0.3750 -0.3750 0.2165
v -0.2165 -0.3750 0.3750
v -0.0000 -0.3750 0.4330
v 0.2165 -0.3750 0.3750
v 0.3750 -0.3750 0.2165
v 0.3536 -0.4786 -0.0000
v 0.3062 -0.4786 -0.1768
v 0.1768 -0.4786 -0.3062
v -0.0000 -0.4786 -0.3536
v -0.1768 -0.4786 -0.3062
v -0.3062 -0.4786 -0.1768
v -0.3536 -0.4786 -0.0000
v -0.3062 -0.4786 0.1768
v -0.1768 -0.4786 0.3062
v -0.0000 -0.4786 0.3536
v 0.1768 -0.4786 0.3062
v 0.3062 -0.4786 0.1768
v 0.2500 -0.5580 -0.0000
v 0.2165 -0.5580 -0.1250
v 0.1250 -0.5580 -0.2165
v -0.0000 -0.5580 -0.2500
v -0.1250 -0.5580 -0.2165
v -0.2165 -0.5580 -0.1250
v -0.2500 -0.5580 -0.0000
v -0.2165 -0.5580 0.1250
v -0.1250 -0.5580 0.2165
v -0.0000 -0.5580 0.2500
v 0.1250 -0.5580 0.2165
v 0.2165 -0.5580 0.1250
v 0.1294 -0.6080 -0.0000
v 0.1121 -0.6080 -0.0647
v 0.0647 -0.6080 -0.1121
v -0.0000 -0.6080 -0.1294
v -0.0647 -0.6080 -0.1121
v -0.1121 -0.6080 -0.0647
v -0.1294 -0.6080 -0.0000
v -0.1121 -0.6080 0.0647
v -0.0647 -0.6080 0.1121
v -0.0000 -0.6080 0.1294
v 0.0647 -0.6080 0.1121
v 0.1121 -0.6080 0.0647
v 0.0000 -0.6250 -0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule03
usemtl wire_229166215
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 11:40:37
mtllib lower_arm.mtl
#
# object Capsule14
#
v 0.8500 -0.0000 -0.0000
v 0.8398 -0.0000 -0.0776
v 0.8398 0.0388 -0.0672
v 0.8398 0.0672 -0.0388
v 0.8398 0.0776 -0.0000
v 0.8398 0.0672 0.0388
v 0.8398 0.0388 0.0672
v 0.8398 -0.0000 0.0776
v 0.8398 -0.0388 0.0672
v 0.8398 -0.0672 0.0388
v 0.8398 -0.0776 -0.0000
v 0.8398 -0.0672 -0.0388
v 0.8398 -0.0388 -0.0672
v 0.8098 -0.0000 -0.1500
v 0.8098 0.0750 -0.1299
v 0.8098 0.1299 -0.0750
v 0.8098 0.1500 -0.0000
v 0.8098 0.1299 0.0750
v 0.8098 0.0750 0.1299
v 0.8098 -0.0000 0.1500
v 0.8098 -0.0750 0.1299
v 0.8098 -0.1299 0.0750
v 0.8098 -0.1500 0.0000
v 0.8098 -0.1299 -0.0750
v 0.8098 -0.0750 -0.1299
v 0.7621 -0.0000 -0.2121
v 0.7621 0.1061 -0.1837
v 0.7621 0.1837 -0.1061
v 0.7621 0.2121 -0.0000
v 0.7621 0.1837 0.1061
v 0.7621 0.1061 0.1837
v 0.7621 -0.0000 0.2121
v 0.7621 -0.1061 0.1837
v 0.7621 -0.1837 0.1061
v 0.7621 -0.2121 0.0000
v 0.7621 -0.1837 -0.1061
v 0.7621 -0.1061 -0.1837
v 0.7000 -0.0000 -0.2598
v 0.7000 0.1299 -0.2250
v 0.7000 0.2250 -0.1299
v 0.7000 0.2598 -0.0000
v 0.7000 0.2250 0.1299
v 0.7000 0.1299 0.2250
v 0.7000 -0.0000 0.2598
v 0.7000 -0.1299 0.2250
v 0.7000 -0.2250 0.1299
v 0.7000 -0.2598 0.0000
v 0.7000 -0.2250 -0.1299
v 0.7000 -0.1299 -0.2250
v 0.6276 -0.0000 -0.2898
v 0.6276 0.1449 -0.2510
v 0.6276 0.2510 -0.1449
v 0.6276 0.2898 -0.0000
v 0.6276 0.2510 0.1449
v 0.6276 0.1449 0.2510
v 0.6276 -0.0000 0.2898
v 0.6276 -0.1449 0.2510
v 0.6276 -0.2510 0.1449
v 0.6276 -0.2898 0.0000
v 0.6276 -0.2510 -0.1449
v 0.6276 -0.1449 -0.2510
v 0.5500 -0.0000 -0.3000
v 0.5500 0.1500 -0.2598
v 0.5500 0.2598 -0.1500
v 0.5500 0.3000 -0.0000
v 0.5500 0.2598 0.1500
v 0.5500 0.1500 0.2598
v 0.5500 -0.0000 0.3000
v 0.5500 -0.1500 0.2598
v 0.5500 -0.2598 0.1500
v 0.5500 -0.3000 0.0000
v 0.5500 -0.2598 -0.1500
v 0.5500 -0.1500 -0.2598
v -0.5500 -0.0000 -0.3000
v -0.5500 0.1500 -0.2598
v -0.5500 0.2598 -0.1500
v -0.5500 0.3000 0.0000
v -0.5500 0.2598 0.1500
v -0.5500 0.1500 0.2598
v -0.5500 0.0000 0.3000
v -0.5500 -0.1500 0.2598
v -0.5500 -0.2598 0.1500
v -0.5500 -0.3000 0.0000
v -0.5500 -0.2598 -0.1500
v -0.5500 -0.1500 -0.2598
v -0.6276 -0.0000 -0.2898
v -0.6276 0.1449 -0.2510
v -0.6276 0.2510 -0.1449
v -0.6276 0.2898 0.0000
v -0.6276 0.2510 0.1449
v -0.6276 0.1449 0.2510
v -0.6276 0.0000 0.2898
v -0.6276 -0.1449 0.2510
v -0.6276 -0.2510 0.1449
v -0.6276 -0.2898 0.0000
v -0.6276 -0.2510 -0.1449
v -0.6276 -0.1449 -0.2510
v -0.7000 -0.0000 -0.2598
v -0.7000 0.1299 -0.2250
v -0.7000 0.2250 -0.1299
v -0.7000 0.2598 0.0000
v -0.7000 0.2250 0.1299
v -0.7000 0.1299 0.2250
v -0.7000 0.0000 0.2598
v -0.7000 -0.1299 0.2250
v -0.7000 -0.2250 0.1299
v -0.7000 -0.2598 0.0000
v -0.7000 -0.2250 -0.1299
v -0.7000 -0.1299 -0.2250
v -0.7621 -0.0000 -0.2121
v -0.7621 0.1061 -0.1837
v -0.7621 0.1837 -0.1061
v -0.7621 0.2121 0.0000
v -0.7621 0.1837 0.1061
v -0.7621 0.1061 0.1837
v -0.7621 0.0000 0.2121
v -0.7621 -0.1061 0.1837
v -0.7621 -0.1837 0.1061
v -0.7621 -0.2121 0.0000
v -0.7621 -0.1837 -0.1061
v -0.7621 -0.1061 -0.1837
v -0.8098 -0.0000 -0.1500
v -0.8098 0.0750 -0.1299
v -0.8098 0.1299 -0.0750
v -0.8098 0.1500 0.0000
v -0.8098 0.1299 0.0750
v -0.8098 0.0750 0.1299
v -0.8098 0.0000 0.1500
v -0.8098 -0.0750 0.1299
v -0.8098 -0.1299 0.0750
v -0.8098 -0.1500 0.0000
v -0.8098 -0.1299 -0.0750
v -0.8098 -0.0750 -0.1299
v -0.8398 -0.0000 -0.0776
v -0.8398 0.0388 -0.0672
v -0.8398 0.0672 -0.0388
v -0.8398 0.0776 0.0000
v -0.8398 0.0672 0.0388
v -0.8398 0.0388 0.0672
v -0.8398 0.0000 0.0776
v -0.8398 -0.0388 0.0672
v -0.8398 -0.0672 0.0388
v -0.8398 -0.0776 0.0000
v -0.8398 -0.0672 -0.0388
v -0.8398 -0.0388 -0.0672
v -0.8500 0.0000 0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule14
usemtl wire_088199225
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 08:53:42
mtllib lower_leg.mtl
#
# object Capsule05
#
v 0.0000 1.0000 -0.0000
v 0.0776 0.9898 -0.0000
v 0.0672 0.9898 -0.0388
v 0.0388 0.9898 -0.0672
v -0.0000 0.9898 -0.0776
v -0.0388 0.9898 -0.0672
v -0.0672 0.9898 -0.0388
v -0.0776 0.9898 -0.0000
v -0.0672 0.9898 0.0388
v -0.0388 0.9898 0.0672
v -0.0000 0.9898 0.0776
v 0.0388 0.9898 0.0672
v 0.0672 0.9898 0.0388
v 0.1500 0.9598 -0.0000
v 0.1299 0.9598 -0.0750
v 0.0750 0.9598 -0.1299
v -0.0000 0.9598 -0.1500
v -0.0750 0.9598 -0.1299
v -0.1299 0.9598 -0.0750
v -0.1500 0.9598 -0.0000
v -0.1299 0.9598 0.0750
v -0.0750 0.9598 0.1299
v -0.0000 0.9598 0.1500
v 0.0750 0.9598 0.1299
v 0.1299 0.9598 0.0750
v 0.2121 0.9121 -0.0000
v 0.1837 0.9121 -0.1061
v 0.1061 0.9121 -0.1837
v -0.0000 0.9121 -0.2121
v -0.1061 0.9121 -0.1837
v -0.1837 0.9121 -0.1061
v -0.2121 0.9121 -0.0000
v -0.1837 0.9121 0.1061
v -0.1061 0.9121 0.1837
v -0.0000 0.9121 0.2121
v 0.1061 0.9121 0.1837
v 0.1837 0.9121 0.1061
v 0.2598 0.8500 -0.0000
v 0.2250 0.8500 -0.1299
v 0.1299 0.8500 -0.2250
v -0.0000 0.8500 -0.2598
v -0.1299 0.8500 -0.2250
v -0.2250 0.8500 -0.1299
v -0.2598 0.8500 -0.0000
v -0.2250 0.8500 0.1299
v -0.1299 0.8500 0.2250
v -0.0000 0.8500 0.2598
v 0.1299 0.8500 0.2250
v 0.2250 0.8500 0.1299
v 0.2898 0.7776 -0.0000
v 0.2510 0.7776 -0.1449
v 0.1449 0.7776 -0.2510
v -0.0000 0.7776 -0.2898
v -0.1449 0.7776 -0.2510
v -0.2510 0.7776 -0.1449
v -0.2898 0.7776 -0.0000
v -0.2510 0.7776 0.1449
v -0.1449 0.7776 0.2510
v -0.0000 0.7776 0.2898
v 0.1449 0.7776 0.2510
v 0.2510 0.7776 0.1449
v 0.3000 0.7000 -0.0000
v 0.2598 0.7000 -0.1500
v 0.1500 0.7000 -0.2598
v -0.0000 0.7000 -0.3000
v -0.1500 0.7000 -0.2598
v -0.2598 0.7000 -0.1500
v -0.3000 0.7000 -0.0000
v -0.2598 0.7000 0.1500
v -0.1500 0.7000 0.2598
v -0.0000 0.7000 0.3000
v 0.1500 0.7000 0.2598
v 0.2598 0.7000 0.1500
v 0.3000 -0.7000 -0.0000
v 0.2598 -0.7000 -0.1500
v 0.1500 -0.7000 -0.2598
v -0.0000 -0.7000 -0.3000
v -0.1500 -0.7000 -0.2598
v -0.2598 -0.7000 -0.1500
v -0.3000 -0.7000 -0.0000
v -0.2598 -0.7000 0.1500
v -0.1500 -0.7000 0.2598
v -0.0000 -0.7000 0.3000
v 0.1500 -0.7000 0.2598
v 0.2598 -0.7000 0.1500
v 0.2898 -0.7776 -0.0000
v 0.2510 -0.7776 -0.1449
v 0.1449 -0.7776 -0.2510
v -0.0000 -0.7776 -0.2898
v -0.1449 -0.7776 -0.2510
v -0.2510 -0.7776 -0.1449
v -0.2898 -0.7776 -0.0000
v -0.2510 -0.7776 0.1449
v -0.1449 -0.7776 0.2510
v -0.0000 -0.7776 0.2898
v 0.1449 -0.7776 0.2510
v 0.2510 -0.7776 0.1449
v 0.2598 -0.8500 -0.0000
v 0.2250 -0.8500 -0.1299
v 0.1299 -0.8500 -0.2250
v -0.0000 -0.8500 -0.2598
v -0.1299 -0.8500 -0.2250
v -0.2250 -0.8500 -0.1299
v -0.2598 -0.8500 -0.0000
v -0.2250 -0.8500 0.1299
v -0.1299 -0.8500 0.2250
v -0.0000 -0.8500 0.2598
v 0.1299 -0.8500 0.2250
v 0.2250 -0.8500 0.1299
v 0.2121 -0.9121 -0.0000
v 0.1837 -0.9121 -0.1061
v 0.1061 -0.9121 -0.1837
v -0.0000 -0.9121 -0.2121
v -0.1061 -0.9121 -0.1837
v -0.1837 -0.9121 -0.1061
v -0.2121 -0.9121 -0.0000
v -0.1837 -0.9121 0.1061
v -0.1061 -0.9121 0.1837
v -0.0000 -0.9121 0.2121
v 0.1061 -0.9121 0.1837
v 0.1837 -0.9121 0.1061
v 0.1500 -0.9598 -0.0000
v 0.1299 -0.9598 -0.0750
v 0.0750 -0.9598 -0.1299
v -0.0000 -0.9598 -0.1500
v -0.0750 -0.9598 -0.1299
v -0.1299 -0.9598 -0.0750
v -0.1500 -0.9598 -0.0000
v -0.1299 -0.9598 0.0750
v -0.0750 -0.9598 0.1299
v -0.0000 -0.9598 0.1500
v 0.0750 -0.9598 0.1299
v 0.1299 -0.9598 0.0750
v 0.0776 -0.9898 -0.0000
v 0.0672 -0.9898 -0.0388
v 0.0388 -0.9898 -0.0672
v -0.0000 -0.9898 -0.0776
v -0.0388 -0.9898 -0.0672
v -0.0672 -0.9898 -0.0388
v -0.0776 -0.9898 -0.0000
v -0.0672 -0.9898 0.0388
v -0.0388 -0.9898 0.0672
v -0.0000 -0.9898 0.0776
v 0.0388 -0.9898 0.0672
v 0.0672 -0.9898 0.0388
v 0.0000 -1.0000 -0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule05
usemtl wire_154154229
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 13:58:56
mtllib pelvis.mtl
#
# object Capsule09
#
v 0.0000 1.2500 -0.0000
v 0.2071 1.2227 -0.0000
v 0.1793 1.2227 -0.1035
v 0.1035 1.2227 -0.1793
v -0.0000 1.2227 -0.2071
v -0.1035 1.2227 -0.1793
v -0.1793 1.2227 -0.1035
v -0.2071 1.2227 -0.0000
v -0.1793 1.2227 0.1035
v -0.1035 1.2227 0.1793
v -0.0000 1.2227 0.2071
v 0.1035 1.2227 0.1793
v 0.1793 1.2227 0.1035
v 0.4000 1.1428 -0.0000
v 0.3464 1.1428 -0.2000
v 0.2000 1.1428 -0.3464
v -0.0000 1.1428 -0.4000
v -0.2000 1.1428 -0.3464
v -0.3464 1.1428 -0.2000
v -0.4000 1.1428 -0.0000
v -0.3464 1.1428 0.2000
v -0.2000 1.1428 0.3464
v -0.0000 1.1428 0.4000
v 0.2000 1.1428 0.3464
v 0.3464 1.1428 0.2000
v 0.5657 1.0157 -0.0000
v 0.4899 1.0157 -0.2828
v 0.2828 1.0157 -0.4899
v -0.0000 1.0157 -0.5657
v -0.2828 1.0157 -0.4899
v -0.4899 1.0157 -0.2828
v -0.5657 1.0157 -0.0000
v -0.4899 1.0157 0.2828
v -0.2828 1.0157 0.4899
v -0.0000 1.0157 0.5657
v 0.2828 1.0157 0.4899
v 0.4899 1.0157 0.2828
v 0.6928 0.8500 -0.0000
v 0.6000 0.8500 -0.3464
v 0.3464 0.8500 -0.6000
v -0.0000 0.8500 -0.6928
v -0.3464 0.8500 -0.6000
v -0.6000 0.8500 -0.3464
v -0.6928 0.8500 -0.0000
v -0.6000 0.8500 0.3464
v -0.3464 0.8500 0.6000
v -0.0000 0.8500 0.6928
v 0.3464 0.8500 0.6000
v 0.6000 0.8500 0.3464
v 0.7727 0.6571 -0.0000
v 0.6692 0.6571 -0.3864
v 0.3864 0.6571 -0.6692
v -0.0000 0.6571 -0.7727
v -0.3864 0.6571 -0.6692
v -0.6692 0.6571 -0.3864
v -0.7727 0.6571 -0.0000
v -0.6692 0.6571 0.3864
v -0.3864 0.6571 0.6692
v -0.0000 0.6571 0.7727
v 0.3864 0.6571 0.6692
v 0.6692 0.6571 0.3864
v 0.8000 0.4500 -0.0000
v 0.6928 0.4500 -0.4000
v 0.4000 0.4500 -0.6928
v -0.0000 0.4500 -0.8000
v -0.4000 0.4500 -0.6928
v -0.6928 0.4500 -0.4000
v -0.8000 0.4500 -0.0000
v -0.6928 0.4500 0.4000
v -0.4000 0.4500 0.6928
v -0.0000 0.4500 0.8000
v 0.4000 0.4500 0.6928
v 0.6928 0.4500 0.4000
v 0.8000 -0.4500 -0.0000
v 0.6928 -0.4500 -0.4000
v 0.4000 -0.4500 -0.6928
v -0.0000 -0.4500 -0.8000
v -0.4000 -0.4500 -0.6928
v -0.6928 -0.4500 -0.4000
v -0.8000 -0.4500 -0.0000
v -0.6928 -0.4500 0.4000
v -0.4000 -0.4500 0.6928
v -0.0000 -0.4500 0.8000
v 0.4000 -0.4500 0.6928
v 0.6928 -0.4500 0.4000
v 0.7727 -0.6571 -0.0000
v 0.6692 -0.6571 -0.3864
v 0.3864 -0.6571 -0.6692
v -0.0000 -0.6571 -0.7727
v -0.3864 -0.6571 -0.6692
v -0.6692 -0.6571 -0.3864
v -0.7727 -0.6571 -0.0000
v -0.6692 -0.6571 0.3864
v -0.3864 -0.6571 0.6692
v -0.0000 -0.6571 0.7727
v 0.3864 -0.6571 0.6692
v 0.6692 -0.6571 0.3864
v 0.6928 -0.8500 -0.0000
v 0.6000 -0.8500 -0.3464
v 0.3464 -0.8500 -0.6000
v -0.0000 -0.8500 -0.6928
v -0.3464 -0.8500 -0.6000
v -0.6000 -0.8500 -0.3464
v -0.6928 -0.8500 -0.0000
v -0.6000 -0.8500 0.3464
v -0.3464 -0.8500 0.6000
v -0.0000 -0.8500 0.6928
v 0.3464 -0.8500 0.6000
v 0.6000 -0.8500 0.3464
v 0.5657 -1.0157 -0.0000
v 0.4899 -1.0157 -0.2828
v 0.2828 -1.0157 -0.4899
v -0.0000 -1.0157 -0.5657
v -0.2828 -1.0157 -0.4899
v -0.4899 -1.0157 -0.2828
v -0.5657 -1.0157 -0.0000
v -0.4899 -1.0157 0.2828
v -0.2828 -1.0157 0.4899
v -0.0000 -1.0157 0.5657
v 0.2828 -1.0157 0.4899
v 0.4899 -1.0157 0.2828
v 0.4000 -1.1428 -0.0000
v 0.3464 -1.1428 -0.2000
v 0.2000 -1.1428 -0.3464
v -0.0000 -1.1428 -0.4000
v -0.2000 -1.1428 -0.3464
v -0.3464 -1.1428 -0.2000
v -0.4000 -1.1428 -0.0000
v -0.3464 -1.1428 0.2000
v -0.2000 -1.1428 0.3464
v -0.0000 -1.1428 0.4000
v 0.2000 -1.1428 0.3464
v 0.3464 -1.1428 0.2000
v 0.2071 -1.2227 -0.0000
v 0.1793 -1.2227 -0.1035
v 0.1035 -1.2227 -0.1793
v -0.0000 -1.2227 -0.2071
v -0.1035 -1.2227 -0.1793
v -0.1793 -1.2227 -0.1035
v -0.2071 -1.2227 -0.0000
v -0.1793 -1.2227 0.1035
v -0.1035 -1.2227 0.1793
v -0.0000 -1.2227 0.2071
v 0.1035 -1.2227 0.1793
v 0.1793 -1.2227 0.1035
v 0.0000 -1.2500 -0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule09
usemtl wire_008110134
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 08:51:10
mtllib spine.mtl
#
# object Capsule08
#
v 0.0000 1.0000 -0.0000
v 0.1812 0.9761 -0.0000
v 0.1569 0.9761 -0.0906
v 0.0906 0.9761 -0.1569
v -0.0000 0.9761 -0.1812
v -0.0906 0.9761 -0.1569
v -0.1569 0.9761 -0.0906
v -0.1812 0.9761 -0.0000
v -0.1569 0.9761 0.0906
v -0.0906 0.9761 0.1569
v -0.0000 0.9761 0.1812
v 0.0906 0.9761 0.1569
v 0.1569 0.9761 0.0906
v 0.3500 0.9062 -0.0000
v 0.3031 0.9062 -0.1750
v 0.1750 0.9062 -0.3031
v -0.0000 0.9062 -0.3500
v -0.1750 0.9062 -0.3031
v -0.3031 0.9062 -0.1750
v -0.3500 0.9062 -0.0000
v -0.3031 0.9062 0.1750
v -0.1750 0.9062 0.3031
v -0.0000 0.9062 0.3500
v 0.1750 0.9062 0.3031
v 0.3031 0.9062 0.1750
v 0.4950 0.7950 -0.0000
v 0.4287 0.7950 -0.2475
v 0.2475 0.7950 -0.4287
v -0.0000 0.7950 -0.4950
v -0.2475 0.7950 -0.4287
v -0.4287 0.7950 -0.2475
v -0.4950 0.7950 -0.0000
v -0.4287 0.7950 0.2475
v -0.2475 0.7950 0.4287
v -0.0000 0.7950 0.4950
v 0.2475 0.7950 0.4287
v 0.4287 0.7950 0.2475
v 0.6062 0.6500 -0.0000
v 0.5250 0.6500 -0.3031
v 0.3031 0.6500 -0.5250
v -0.0000 0.6500 -0.6062
v -0.3031 0.6500 -0.5250
v -0.5250 0.6500 -0.3031
v -0.6062 0.6500 -0.0000
v -0.5250 0.6500 0.3031
v -0.3031 0.6500 0.5250
v -0.0000 0.6500 0.6062
v 0.3031 0.6500 0.5250
v 0.5250 0.6500 0.3031
v 0.6761 0.4812 -0.0000
v 0.5856 0.4812 -0.3381
v 0.3381 0.4812 -0.5856
v -0.0000 0.4812 -0.6761
v -0.3381 0.4812 -0.5856
v -0.5856 0.4812 -0.3381
v -0.6761 0.4812 -0.0000
v -0.5856 0.4812 0.3381
v -0.3381 0.4812 0.5856
v -0.0000 0.4812 0.6761
v 0.3381 0.4812 0.5856
v 0.5856 0.4812 0.3381
v 0.7000 0.3000 -0.0000
v 0.6062 0.3000 -0.3500
v 0.3500 0.3000 -0.6062
v -0.0000 0.3000 -0.7000
v -0.3500 0.3000 -0.6062
v -0.6062 0.3000 -0.3500
v -0.7000 0.3000 -0.0000
v -0.6062 0.3000 0.3500
v -0.3500 0.3000 0.6062
v -0.0000 0.3000 0.7000
v 0.3500 0.3000 0.6062
v 0.6062 0.3000 0.3500
v 0.7000 -0.3000 -0.0000
v 0.6062 -0.3000 -0.3500
v 0.3500 -0.3000 -0.6062
v -0.0000 -0.3000 -0.7000
v -0.3500 -0.3000 -0.6062
v -0.6062 -0.3000 -0.3500
v -0.7000 -0.3000 -0.0000
v -0.6062 -0.3000 0.3500
v -0.3500 -0.3000 0.6062
v -0.0000 -0.3000 0.7000
v 0.3500 -0.3000 0.6062
v 0.6062 -0.3000 0.3500
v 0.6761 -0.4812 -0.0000
v 0.5856 -0.4812 -0.3381
v 0.3381 -0.4812 -0.5856
v -0.0000 -0.4812 -0.6761
v -0.3381 -0.4812 -0.5856
v -0.5856 -0.4812 -0.3381
v -0.6761 -0.4812 -0.0000
v -0.5856 -0.4812 0.3381
v -0.3381 -0.4812 0.5856
v -0.0000 -0.4812 0.6761
v 0.3381 -0.4812 0.5856
v 0.5856 -0.4812 0.3381
v 0.6062 -0.6500 -0.0000
v 0.5250 -0.6500 -0.3031
v 0.3031 -0.6500 -0.5250
v -0.0000 -0.6500 -0.6062
v -0.3031 -0.6500 -0.5250
v -0.5250 -0.6500 -0.3031
v -0.6062 -0.6500 -0.0000
v -0.5250 -0.6500 0.3031
v -0.3031 -0.6500 0.5250
v -0.0000 -0.6500 0.6062
v 0.3031 -0.6500 0.5250
v 0.5250 -0.6500 0.3031
v 0.4950 -0.7950 -0.0000
v 0.4287 -0.7950 -0.2475
v 0.2475 -0.7950 -0.4287
v -0.0000 -0.7950 -0.4950
v -0.2475 -0.7950 -0.4287
v -0.4287 -0.7950 -0.2475
v -0.4950 -0.7950 -0.0000
v -0.4287 -0.7950 0.2475
v -0.2475 -0.7950 0.4287
v -0.0000 -0.7950 0.4950
v 0.2475 -0.7950 0.4287
v 0.4287 -0.7950 0.2475
v 0.3500 -0.9062 -0.0000
v 0.3031 -0.9062 -0.1750
v 0.1750 -0.9062 -0.3031
v -0.0000 -0.9062 -0.3500
v -0.1750 -0.9062 -0.3031
v -0.3031 -0.9062 -0.1750
v -0.3500 -0.9062 -0.0000
v -0.3031 -0.9062 0.1750
v -0.1750 -0.9062 0.3031
v -0.0000 -0.9062 0.3500
v 0.1750 -0.9062 0.3031
v 0.3031 -0.9062 0.1750
v 0.1812 -0.9761 -0.0000
v 0.1569 -0.9761 -0.0906
v 0.0906 -0.9761 -0.1569
v -0.0000 -0.9761 -0.1812
v -0.0906 -0.9761 -0.1569
v -0.1569 -0.9761 -0.0906
v -0.1812 -0.9761 -0.0000
v -0.1569 -0.9761 0.0906
v -0.0906 -0.9761 0.1569
v -0.0000 -0.9761 0.1812
v 0.0906 -0.9761 0.1569
v 0.1569 -0.9761 0.0906
v 0.0000 -1.0000 -0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule08
usemtl wire_061134006
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 11:40:19
mtllib upper_arm.mtl
#
# object Capsule12
#
v 1.0000 -0.0000 -0.0000
v 0.9898 -0.0000 -0.0776
v 0.9898 0.0388 -0.0672
v 0.9898 0.0672 -0.0388
v 0.9898 0.0776 -0.0000
v 0.9898 0.0672 0.0388
v 0.9898 0.0388 0.0672
v 0.9898 -0.0000 0.0776
v 0.9898 -0.0388 0.0672
v 0.9898 -0.0672 0.0388
v 0.9898 -0.0776 -0.0000
v 0.9898 -0.0672 -0.0388
v 0.9898 -0.0388 -0.0672
v 0.9598 -0.0000 -0.1500
v 0.9598 0.0750 -0.1299
v 0.9598 0.1299 -0.0750
v 0.9598 0.1500 -0.0000
v 0.9598 0.1299 0.0750
v 0.9598 0.0750 0.1299
v 0.9598 -0.0000 0.1500
v 0.9598 -0.0750 0.1299
v 0.9598 -0.1299 0.0750
v 0.9598 -0.1500 0.0000
v 0.9598 -0.1299 -0.0750
v 0.9598 -0.0750 -0.1299
v 0.9121 -0.0000 -0.2121
v 0.9121 0.1061 -0.1837
v 0.9121 0.1837 -0.1061
v 0.9121 0.2121 -0.0000
v 0.9121 0.1837 0.1061
v 0.9121 0.1061 0.1837
v 0.9121 -0.0000 0.2121
v 0.9121 -0.1061 0.1837
v 0.9121 -0.1837 0.1061
v 0.9121 -0.2121 0.0000
v 0.9121 -0.1837 -0.1061
v 0.9121 -0.1061 -0.1837
v 0.8500 -0.0000 -0.2598
v 0.8500 0.1299 -0.2250
v 0.8500 0.2250 -0.1299
v 0.8500 0.2598 -0.0000
v 0.8500 0.2250 0.1299
v 0.8500 0.1299 0.2250
v 0.8500 -0.0000 0.2598
v 0.8500 -0.1299 0.2250
v 0.8500 -0.2250 0.1299
v 0.8500 -0.2598 0.0000
v 0.8500 -0.2250 -0.1299
v 0.8500 -0.1299 -0.2250
v 0.7776 -0.0000 -0.2898
v 0.7776 0.1449 -0.2510
v 0.7776 0.2510 -0.1449
v 0.7776 0.2898 -0.0000
v 0.7776 0.2510 0.1449
v 0.7776 0.1449 0.2510
v 0.7776 -0.0000 0.2898
v 0.7776 -0.1449 0.2510
v 0.7776 -0.2510 0.1449
v 0.7776 -0.2898 0.0000
v 0.7776 -0.2510 -0.1449
v 0.7776 -0.1449 -0.2510
v 0.7000 -0.0000 -0.3000
v 0.7000 0.1500 -0.2598
v 0.7000 0.2598 -0.1500
v 0.7000 0.3000 -0.0000
v 0.7000 0.2598 0.1500
v 0.7000 0.1500 0.2598
v 0.7000 -0.0000 0.3000
v 0.7000 -0.1500 0.2598
v 0.7000 -0.2598 0.1500
v 0.7000 -0.3000 0.0000
v 0.7000 -0.2598 -0.1500
v 0.7000 -0.1500 -0.2598
v -0.7000 -0.0000 -0.3000
v -0.7000 0.1500 -0.2598
v -0.7000 0.2598 -0.1500
v -0.7000 0.3000 0.0000
v -0.7000 0.2598 0.1500
v -0.7000 0.1500 0.2598
v -0.7000 0.0000 0.3000
v -0.7000 -0.1500 0.2598
v -0.7000 -0.2598 0.1500
v -0.7000 -0.3000 0.0000
v -0.7000 -0.2598 -0.1500
v -0.7000 -0.1500 -0.2598
v -0.7776 -0.0000 -0.2898
v -0.7776 0.1449 -0.2510
v -0.7776 0.2510 -0.1449
v -0.7776 0.2898 0.0000
v -0.7776 0.2510 0.1449
v -0.7776 0.1449 0.2510
v -0.7776 0.0000 0.2898
v -0.7776 -0.1449 0.2510
v -0.7776 -0.2510 0.1449
v -0.7776 -0.2898 0.0000
v -0.7776 -0.2510 -0.1449
v -0.7776 -0.1449 -0.2510
v -0.8500 -0.0000 -0.2598
v -0.8500 0.1299 -0.2250
v -0.8500 0.2250 -0.1299
v -0.8500 0.2598 0.0000
v -0.8500 0.2250 0.1299
v -0.8500 0.1299 0.2250
v -0.8500 0.0000 0.2598
v -0.8500 -0.1299 0.2250
v -0.8500 -0.2250 0.1299
v -0.8500 -0.2598 0.0000
v -0.8500 -0.2250 -0.1299
v -0.8500 -0.1299 -0.2250
v -0.9121 -0.0000 -0.2121
v -0.9121 0.1061 -0.1837
v -0.9121 0.1837 -0.1061
v -0.9121 0.2121 0.0000
v -0.9121 0.1837 0.1061
v -0.9121 0.1061 0.1837
v -0.9121 0.0000 0.2121
v -0.9121 -0.1061 0.1837
v -0.9121 -0.1837 0.1061
v -0.9121 -0.2121 0.0000
v -0.9121 -0.1837 -0.1061
v -0.9121 -0.1061 -0.1837
v -0.9598 -0.0000 -0.1500
v -0.9598 0.0750 -0.1299
v -0.9598 0.1299 -0.0750
v -0.9598 0.1500 0.0000
v -0.9598 0.1299 0.0750
v -0.9598 0.0750 0.1299
v -0.9598 0.0000 0.1500
v -0.9598 -0.0750 0.1299
v -0.9598 -0.1299 0.0750
v -0.9598 -0.1500 0.0000
v -0.9598 -0.1299 -0.0750
v -0.9598 -0.0750 -0.1299
v -0.9898 -0.0000 -0.0776
v -0.9898 0.0388 -0.0672
v -0.9898 0.0672 -0.0388
v -0.9898 0.0776 0.0000
v -0.9898 0.0672 0.0388
v -0.9898 0.0388 0.0672
v -0.9898 0.0000 0.0776
v -0.9898 -0.0388 0.0672
v -0.9898 -0.0672 0.0388
v -0.9898 -0.0776 0.0000
v -0.9898 -0.0672 -0.0388
v -0.9898 -0.0388 -0.0672
v -1.0000 0.0000 0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule12
usemtl wire_154154229
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,548 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# ´´˝¨ľÄÎÄźţ:27.12.2011 08:53:15
mtllib upper_leg.mtl
#
# object Capsule07
#
v 0.0000 0.8500 -0.0000
v 0.0776 0.8398 -0.0000
v 0.0672 0.8398 -0.0388
v 0.0388 0.8398 -0.0672
v -0.0000 0.8398 -0.0776
v -0.0388 0.8398 -0.0672
v -0.0672 0.8398 -0.0388
v -0.0776 0.8398 -0.0000
v -0.0672 0.8398 0.0388
v -0.0388 0.8398 0.0672
v -0.0000 0.8398 0.0776
v 0.0388 0.8398 0.0672
v 0.0672 0.8398 0.0388
v 0.1500 0.8098 -0.0000
v 0.1299 0.8098 -0.0750
v 0.0750 0.8098 -0.1299
v -0.0000 0.8098 -0.1500
v -0.0750 0.8098 -0.1299
v -0.1299 0.8098 -0.0750
v -0.1500 0.8098 -0.0000
v -0.1299 0.8098 0.0750
v -0.0750 0.8098 0.1299
v -0.0000 0.8098 0.1500
v 0.0750 0.8098 0.1299
v 0.1299 0.8098 0.0750
v 0.2121 0.7621 -0.0000
v 0.1837 0.7621 -0.1061
v 0.1061 0.7621 -0.1837
v -0.0000 0.7621 -0.2121
v -0.1061 0.7621 -0.1837
v -0.1837 0.7621 -0.1061
v -0.2121 0.7621 -0.0000
v -0.1837 0.7621 0.1061
v -0.1061 0.7621 0.1837
v -0.0000 0.7621 0.2121
v 0.1061 0.7621 0.1837
v 0.1837 0.7621 0.1061
v 0.2598 0.7000 -0.0000
v 0.2250 0.7000 -0.1299
v 0.1299 0.7000 -0.2250
v -0.0000 0.7000 -0.2598
v -0.1299 0.7000 -0.2250
v -0.2250 0.7000 -0.1299
v -0.2598 0.7000 -0.0000
v -0.2250 0.7000 0.1299
v -0.1299 0.7000 0.2250
v -0.0000 0.7000 0.2598
v 0.1299 0.7000 0.2250
v 0.2250 0.7000 0.1299
v 0.2898 0.6276 -0.0000
v 0.2510 0.6276 -0.1449
v 0.1449 0.6276 -0.2510
v -0.0000 0.6276 -0.2898
v -0.1449 0.6276 -0.2510
v -0.2510 0.6276 -0.1449
v -0.2898 0.6276 -0.0000
v -0.2510 0.6276 0.1449
v -0.1449 0.6276 0.2510
v -0.0000 0.6276 0.2898
v 0.1449 0.6276 0.2510
v 0.2510 0.6276 0.1449
v 0.3000 0.5500 -0.0000
v 0.2598 0.5500 -0.1500
v 0.1500 0.5500 -0.2598
v -0.0000 0.5500 -0.3000
v -0.1500 0.5500 -0.2598
v -0.2598 0.5500 -0.1500
v -0.3000 0.5500 -0.0000
v -0.2598 0.5500 0.1500
v -0.1500 0.5500 0.2598
v -0.0000 0.5500 0.3000
v 0.1500 0.5500 0.2598
v 0.2598 0.5500 0.1500
v 0.3000 -0.5500 -0.0000
v 0.2598 -0.5500 -0.1500
v 0.1500 -0.5500 -0.2598
v -0.0000 -0.5500 -0.3000
v -0.1500 -0.5500 -0.2598
v -0.2598 -0.5500 -0.1500
v -0.3000 -0.5500 -0.0000
v -0.2598 -0.5500 0.1500
v -0.1500 -0.5500 0.2598
v -0.0000 -0.5500 0.3000
v 0.1500 -0.5500 0.2598
v 0.2598 -0.5500 0.1500
v 0.2898 -0.6276 -0.0000
v 0.2510 -0.6276 -0.1449
v 0.1449 -0.6276 -0.2510
v -0.0000 -0.6276 -0.2898
v -0.1449 -0.6276 -0.2510
v -0.2510 -0.6276 -0.1449
v -0.2898 -0.6276 -0.0000
v -0.2510 -0.6276 0.1449
v -0.1449 -0.6276 0.2510
v -0.0000 -0.6276 0.2898
v 0.1449 -0.6276 0.2510
v 0.2510 -0.6276 0.1449
v 0.2598 -0.7000 -0.0000
v 0.2250 -0.7000 -0.1299
v 0.1299 -0.7000 -0.2250
v -0.0000 -0.7000 -0.2598
v -0.1299 -0.7000 -0.2250
v -0.2250 -0.7000 -0.1299
v -0.2598 -0.7000 -0.0000
v -0.2250 -0.7000 0.1299
v -0.1299 -0.7000 0.2250
v -0.0000 -0.7000 0.2598
v 0.1299 -0.7000 0.2250
v 0.2250 -0.7000 0.1299
v 0.2121 -0.7621 -0.0000
v 0.1837 -0.7621 -0.1061
v 0.1061 -0.7621 -0.1837
v -0.0000 -0.7621 -0.2121
v -0.1061 -0.7621 -0.1837
v -0.1837 -0.7621 -0.1061
v -0.2121 -0.7621 -0.0000
v -0.1837 -0.7621 0.1061
v -0.1061 -0.7621 0.1837
v -0.0000 -0.7621 0.2121
v 0.1061 -0.7621 0.1837
v 0.1837 -0.7621 0.1061
v 0.1500 -0.8098 -0.0000
v 0.1299 -0.8098 -0.0750
v 0.0750 -0.8098 -0.1299
v -0.0000 -0.8098 -0.1500
v -0.0750 -0.8098 -0.1299
v -0.1299 -0.8098 -0.0750
v -0.1500 -0.8098 -0.0000
v -0.1299 -0.8098 0.0750
v -0.0750 -0.8098 0.1299
v -0.0000 -0.8098 0.1500
v 0.0750 -0.8098 0.1299
v 0.1299 -0.8098 0.0750
v 0.0776 -0.8398 -0.0000
v 0.0672 -0.8398 -0.0388
v 0.0388 -0.8398 -0.0672
v -0.0000 -0.8398 -0.0776
v -0.0388 -0.8398 -0.0672
v -0.0672 -0.8398 -0.0388
v -0.0776 -0.8398 -0.0000
v -0.0672 -0.8398 0.0388
v -0.0388 -0.8398 0.0672
v -0.0000 -0.8398 0.0776
v 0.0388 -0.8398 0.0672
v 0.0672 -0.8398 0.0388
v 0.0000 -0.8500 -0.0000
# 146 vertices
vt 0.5000 0.5000 0.0000
vt 0.6294 0.5000 0.0000
vt 0.6121 0.5647 0.0000
vt 0.5647 0.6121 0.0000
vt 0.5000 0.6294 0.0000
vt 0.4353 0.6121 0.0000
vt 0.3879 0.5647 0.0000
vt 0.3706 0.5000 0.0000
vt 0.3879 0.4353 0.0000
vt 0.4353 0.3879 0.0000
vt 0.5000 0.3706 0.0000
vt 0.5647 0.3879 0.0000
vt 0.6121 0.4353 0.0000
vt 0.7500 0.5000 0.0000
vt 0.7165 0.6250 0.0000
vt 0.6250 0.7165 0.0000
vt 0.5000 0.7500 0.0000
vt 0.3750 0.7165 0.0000
vt 0.2835 0.6250 0.0000
vt 0.2500 0.5000 0.0000
vt 0.2835 0.3750 0.0000
vt 0.3750 0.2835 0.0000
vt 0.5000 0.2500 0.0000
vt 0.6250 0.2835 0.0000
vt 0.7165 0.3750 0.0000
vt 0.8536 0.5000 0.0000
vt 0.8062 0.6768 0.0000
vt 0.6768 0.8062 0.0000
vt 0.5000 0.8536 0.0000
vt 0.3232 0.8062 0.0000
vt 0.1938 0.6768 0.0000
vt 0.1464 0.5000 0.0000
vt 0.1938 0.3232 0.0000
vt 0.3232 0.1938 0.0000
vt 0.5000 0.1464 0.0000
vt 0.6768 0.1938 0.0000
vt 0.8062 0.3232 0.0000
vt 0.9330 0.5000 0.0000
vt 0.8750 0.7165 0.0000
vt 0.7165 0.8750 0.0000
vt 0.5000 0.9330 0.0000
vt 0.2835 0.8750 0.0000
vt 0.1250 0.7165 0.0000
vt 0.0670 0.5000 0.0000
vt 0.1250 0.2835 0.0000
vt 0.2835 0.1250 0.0000
vt 0.5000 0.0670 0.0000
vt 0.7165 0.1250 0.0000
vt 0.8750 0.2835 0.0000
vt 0.9830 0.5000 0.0000
vt 0.9183 0.7415 0.0000
vt 0.7415 0.9183 0.0000
vt 0.5000 0.9830 0.0000
vt 0.2585 0.9183 0.0000
vt 0.0817 0.7415 0.0000
vt 0.0170 0.5000 0.0000
vt 0.0817 0.2585 0.0000
vt 0.2585 0.0817 0.0000
vt 0.5000 0.0170 0.0000
vt 0.7415 0.0817 0.0000
vt 0.9183 0.2585 0.0000
vt 1.0000 0.5000 0.0000
vt 0.9330 0.7500 0.0000
vt 0.7500 0.9330 0.0000
vt 0.5000 1.0000 0.0000
vt 0.2500 0.9330 0.0000
vt 0.0670 0.7500 0.0000
vt 0.0000 0.5000 0.0000
vt 0.0670 0.2500 0.0000
vt 0.2500 0.0670 0.0000
vt 0.5000 0.0000 0.0000
vt 0.7500 0.0670 0.0000
vt 0.9330 0.2500 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
vt 0.0833 0.0000 0.0000
vt 0.0833 1.0000 0.0000
vt 0.1667 0.0000 0.0000
vt 0.1667 1.0000 0.0000
vt 0.2500 0.0000 0.0000
vt 0.2500 1.0000 0.0000
vt 0.3333 0.0000 0.0000
vt 0.3333 1.0000 0.0000
vt 0.4167 0.0000 0.0000
vt 0.4167 1.0000 0.0000
vt 0.5833 0.0000 0.0000
vt 0.5833 1.0000 0.0000
vt 0.6667 0.0000 0.0000
vt 0.6667 1.0000 0.0000
vt 0.7500 0.0000 0.0000
vt 0.7500 1.0000 0.0000
vt 0.8333 0.0000 0.0000
vt 0.8333 1.0000 0.0000
vt 0.9167 0.0000 0.0000
vt 0.9167 1.0000 0.0000
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
# 97 texture coords
g Capsule07
usemtl wire_088199225
f 1/1 2/2 3/3
f 1/1 3/3 4/4
f 1/1 4/4 5/5
f 1/1 5/5 6/6
f 1/1 6/6 7/7
f 1/1 7/7 8/8
f 1/1 8/8 9/9
f 1/1 9/9 10/10
f 1/1 10/10 11/11
f 1/1 11/11 12/12
f 1/1 12/12 13/13
f 1/1 13/13 2/2
f 2/2 14/14 15/15
f 2/2 15/15 3/3
f 3/3 15/15 16/16
f 3/3 16/16 4/4
f 4/4 16/16 17/17
f 4/4 17/17 5/5
f 5/5 17/17 18/18
f 5/5 18/18 6/6
f 6/6 18/18 19/19
f 6/6 19/19 7/7
f 7/7 19/19 20/20
f 7/7 20/20 8/8
f 8/8 20/20 21/21
f 8/8 21/21 9/9
f 9/9 21/21 22/22
f 9/9 22/22 10/10
f 10/10 22/22 23/23
f 10/10 23/23 11/11
f 11/11 23/23 24/24
f 11/11 24/24 12/12
f 12/12 24/24 25/25
f 12/12 25/25 13/13
f 13/13 25/25 14/14
f 13/13 14/14 2/2
f 14/14 26/26 27/27
f 14/14 27/27 15/15
f 15/15 27/27 28/28
f 15/15 28/28 16/16
f 16/16 28/28 29/29
f 16/16 29/29 17/17
f 17/17 29/29 30/30
f 17/17 30/30 18/18
f 18/18 30/30 31/31
f 18/18 31/31 19/19
f 19/19 31/31 32/32
f 19/19 32/32 20/20
f 20/20 32/32 33/33
f 20/20 33/33 21/21
f 21/21 33/33 34/34
f 21/21 34/34 22/22
f 22/22 34/34 35/35
f 22/22 35/35 23/23
f 23/23 35/35 36/36
f 23/23 36/36 24/24
f 24/24 36/36 37/37
f 24/24 37/37 25/25
f 25/25 37/37 26/26
f 25/25 26/26 14/14
f 26/26 38/38 39/39
f 26/26 39/39 27/27
f 27/27 39/39 40/40
f 27/27 40/40 28/28
f 28/28 40/40 41/41
f 28/28 41/41 29/29
f 29/29 41/41 42/42
f 29/29 42/42 30/30
f 30/30 42/42 43/43
f 30/30 43/43 31/31
f 31/31 43/43 44/44
f 31/31 44/44 32/32
f 32/32 44/44 45/45
f 32/32 45/45 33/33
f 33/33 45/45 46/46
f 33/33 46/46 34/34
f 34/34 46/46 47/47
f 34/34 47/47 35/35
f 35/35 47/47 48/48
f 35/35 48/48 36/36
f 36/36 48/48 49/49
f 36/36 49/49 37/37
f 37/37 49/49 38/38
f 37/37 38/38 26/26
f 38/38 50/50 51/51
f 38/38 51/51 39/39
f 39/39 51/51 52/52
f 39/39 52/52 40/40
f 40/40 52/52 53/53
f 40/40 53/53 41/41
f 41/41 53/53 54/54
f 41/41 54/54 42/42
f 42/42 54/54 55/55
f 42/42 55/55 43/43
f 43/43 55/55 56/56
f 43/43 56/56 44/44
f 44/44 56/56 57/57
f 44/44 57/57 45/45
f 45/45 57/57 58/58
f 45/45 58/58 46/46
f 46/46 58/58 59/59
f 46/46 59/59 47/47
f 47/47 59/59 60/60
f 47/47 60/60 48/48
f 48/48 60/60 61/61
f 48/48 61/61 49/49
f 49/49 61/61 50/50
f 49/49 50/50 38/38
f 50/50 62/62 63/63
f 50/50 63/63 51/51
f 51/51 63/63 64/64
f 51/51 64/64 52/52
f 52/52 64/64 65/65
f 52/52 65/65 53/53
f 53/53 65/65 66/66
f 53/53 66/66 54/54
f 54/54 66/66 67/67
f 54/54 67/67 55/55
f 55/55 67/67 68/68
f 55/55 68/68 56/56
f 56/56 68/68 69/69
f 56/56 69/69 57/57
f 57/57 69/69 70/70
f 57/57 70/70 58/58
f 58/58 70/70 71/71
f 58/58 71/71 59/59
f 59/59 71/71 72/72
f 59/59 72/72 60/60
f 60/60 72/72 73/73
f 60/60 73/73 61/61
f 61/61 73/73 62/62
f 61/61 62/62 50/50
f 62/74 74/75 75/76
f 62/74 75/76 63/77
f 63/77 75/76 76/78
f 63/77 76/78 64/79
f 64/79 76/78 77/80
f 64/79 77/80 65/81
f 65/81 77/80 78/82
f 65/81 78/82 66/83
f 66/83 78/82 79/84
f 66/83 79/84 67/85
f 67/85 79/84 80/71
f 67/85 80/71 68/65
f 68/65 80/71 81/86
f 68/65 81/86 69/87
f 69/87 81/86 82/88
f 69/87 82/88 70/89
f 70/89 82/88 83/90
f 70/89 83/90 71/91
f 71/91 83/90 84/92
f 71/91 84/92 72/93
f 72/93 84/92 85/94
f 72/93 85/94 73/95
f 73/95 85/94 74/96
f 73/95 74/96 62/97
f 74/62 86/50 87/51
f 74/62 87/51 75/63
f 75/63 87/51 88/52
f 75/63 88/52 76/64
f 76/64 88/52 89/53
f 76/64 89/53 77/65
f 77/65 89/53 90/54
f 77/65 90/54 78/66
f 78/66 90/54 91/55
f 78/66 91/55 79/67
f 79/67 91/55 92/56
f 79/67 92/56 80/68
f 80/68 92/56 93/57
f 80/68 93/57 81/69
f 81/69 93/57 94/58
f 81/69 94/58 82/70
f 82/70 94/58 95/59
f 82/70 95/59 83/71
f 83/71 95/59 96/60
f 83/71 96/60 84/72
f 84/72 96/60 97/61
f 84/72 97/61 85/73
f 85/73 97/61 86/50
f 85/73 86/50 74/62
f 86/50 98/38 99/39
f 86/50 99/39 87/51
f 87/51 99/39 100/40
f 87/51 100/40 88/52
f 88/52 100/40 101/41
f 88/52 101/41 89/53
f 89/53 101/41 102/42
f 89/53 102/42 90/54
f 90/54 102/42 103/43
f 90/54 103/43 91/55
f 91/55 103/43 104/44
f 91/55 104/44 92/56
f 92/56 104/44 105/45
f 92/56 105/45 93/57
f 93/57 105/45 106/46
f 93/57 106/46 94/58
f 94/58 106/46 107/47
f 94/58 107/47 95/59
f 95/59 107/47 108/48
f 95/59 108/48 96/60
f 96/60 108/48 109/49
f 96/60 109/49 97/61
f 97/61 109/49 98/38
f 97/61 98/38 86/50
f 98/38 110/26 111/27
f 98/38 111/27 99/39
f 99/39 111/27 112/28
f 99/39 112/28 100/40
f 100/40 112/28 113/29
f 100/40 113/29 101/41
f 101/41 113/29 114/30
f 101/41 114/30 102/42
f 102/42 114/30 115/31
f 102/42 115/31 103/43
f 103/43 115/31 116/32
f 103/43 116/32 104/44
f 104/44 116/32 117/33
f 104/44 117/33 105/45
f 105/45 117/33 118/34
f 105/45 118/34 106/46
f 106/46 118/34 119/35
f 106/46 119/35 107/47
f 107/47 119/35 120/36
f 107/47 120/36 108/48
f 108/48 120/36 121/37
f 108/48 121/37 109/49
f 109/49 121/37 110/26
f 109/49 110/26 98/38
f 110/26 122/14 123/15
f 110/26 123/15 111/27
f 111/27 123/15 124/16
f 111/27 124/16 112/28
f 112/28 124/16 125/17
f 112/28 125/17 113/29
f 113/29 125/17 126/18
f 113/29 126/18 114/30
f 114/30 126/18 127/19
f 114/30 127/19 115/31
f 115/31 127/19 128/20
f 115/31 128/20 116/32
f 116/32 128/20 129/21
f 116/32 129/21 117/33
f 117/33 129/21 130/22
f 117/33 130/22 118/34
f 118/34 130/22 131/23
f 118/34 131/23 119/35
f 119/35 131/23 132/24
f 119/35 132/24 120/36
f 120/36 132/24 133/25
f 120/36 133/25 121/37
f 121/37 133/25 122/14
f 121/37 122/14 110/26
f 122/14 134/2 135/3
f 122/14 135/3 123/15
f 123/15 135/3 136/4
f 123/15 136/4 124/16
f 124/16 136/4 137/5
f 124/16 137/5 125/17
f 125/17 137/5 138/6
f 125/17 138/6 126/18
f 126/18 138/6 139/7
f 126/18 139/7 127/19
f 127/19 139/7 140/8
f 127/19 140/8 128/20
f 128/20 140/8 141/9
f 128/20 141/9 129/21
f 129/21 141/9 142/10
f 129/21 142/10 130/22
f 130/22 142/10 143/11
f 130/22 143/11 131/23
f 131/23 143/11 144/12
f 131/23 144/12 132/24
f 132/24 144/12 145/13
f 132/24 145/13 133/25
f 133/25 145/13 134/2
f 133/25 134/2 122/14
f 134/2 146/1 135/3
f 135/3 146/1 136/4
f 136/4 146/1 137/5
f 137/5 146/1 138/6
f 138/6 146/1 139/7
f 139/7 146/1 140/8
f 140/8 146/1 141/9
f 141/9 146/1 142/10
f 142/10 146/1 143/11
f 143/11 146/1 144/12
f 144/12 146/1 145/13
f 145/13 146/1 134/2
# 288 faces

View File

@@ -0,0 +1,12 @@
uniform mat4 uMVPMatrix; //总变换矩阵
attribute vec3 aPosition; //顶点位置
attribute vec2 aTexCoor; //顶点纹理坐标
varying vec2 vTextureCoord; //传给着色器的纹理坐标
void main()
{
gl_Position = uMVPMatrix * vec4(aPosition,1); //根据总变换矩阵计算此次绘制此顶点位置
vTextureCoord=aTexCoor;
}

View File

@@ -0,0 +1,45 @@
uniform mat4 uMVPMatrix; //总变换矩阵
uniform mat4 uMMatrix; //变换矩阵
uniform vec3 uLightLocation; //光源位置
uniform vec3 uCamera; //摄像机位置
attribute vec3 aPosition; //顶点位置
attribute vec3 aNormal; //顶点法向量
//用于传递给片元着色器的变量
varying vec4 ambient;
varying vec4 diffuse;
varying vec4 specular;
//定位光光照计算的方法
void pointLight( //定位光光照计算的方法
in vec3 normal, //法向量
inout vec4 ambient, //环境光最终强度
inout vec4 diffuse, //散射光最终强度
inout vec4 specular, //镜面光最终强度
in vec3 lightLocation, //光源位置
in vec4 lightAmbient, //环境光强度
in vec4 lightDiffuse, //散射光强度
in vec4 lightSpecular //镜面光强度
){
ambient=lightAmbient; //直接得出环境光的最终强度
vec3 normalTarget=aPosition+normal; //计算变换后的法向量
vec3 newNormal=(uMMatrix*vec4(normalTarget,1)).xyz-(uMMatrix*vec4(aPosition,1)).xyz;
newNormal=normalize(newNormal); //对法向量规格化
//计算从表面点到摄像机的向量
vec3 eye= normalize(uCamera-(uMMatrix*vec4(aPosition,1)).xyz);
//计算从表面点到光源位置的向量vp
vec3 vp= normalize(lightLocation-(uMMatrix*vec4(aPosition,1)).xyz);
vp=normalize(vp);//格式化vp
vec3 halfVector=normalize(vp+eye); //求视线与光线的半向量
float shininess=50.0; //粗糙度,越小越光滑
float nDotViewPosition=max(0.0,dot(newNormal,vp)); //求法向量与vp的点积与0的最大值
diffuse=lightDiffuse*nDotViewPosition; //计算散射光的最终强度
float nDotViewHalfVector=dot(newNormal,halfVector); //法线与半向量的点积
float powerFactor=max(0.0,pow(nDotViewHalfVector,shininess)); //镜面反射光强度因子
specular=lightSpecular*powerFactor; //计算镜面光的最终强度
}
void main()
{
gl_Position = uMVPMatrix * vec4(aPosition,1); //根据总变换矩阵计算此次绘制此顶点位置
pointLight(normalize(aNormal),ambient,diffuse,specular,uLightLocation,vec4(0.1,0.1,0.1,1.0),vec4(0.7,0.7,0.7,1.0),vec4(0.3,0.3,0.3,1.0));
}

View File

@@ -0,0 +1,106 @@
# Max2Obj Version 4.0 Mar 10th, 2001
#
# object (null) to come ...
#
v 0.011881 0.003369 -0.983799
v 0.011881 0.203369 -0.783799
v 0.011881 0.003369 -0.583799
v 0.011881 -0.196631 -0.783799
v 0.718988 0.003369 -0.690906
v 0.577566 0.203369 -0.549484
v 0.436145 0.003369 -0.408063
v 0.577566 -0.196631 -0.549485
v 1.011881 0.003369 0.016201
v 0.811881 0.203369 0.016201
v 0.611881 0.003369 0.016201
v 0.811881 -0.196631 0.016201
v 0.718988 0.003369 0.723308
v 0.577566 0.203369 0.581886
v 0.436145 0.003369 0.440465
v 0.577566 -0.196631 0.581886
v 0.011881 0.003369 1.016201
v 0.011881 0.203369 0.816201
v 0.011881 0.003369 0.616201
v 0.011881 -0.196631 0.816201
v -0.695226 0.003369 0.723308
v -0.553805 0.203369 0.581886
v -0.412383 0.003369 0.440465
v -0.553805 -0.196631 0.581886
v -0.988119 0.003369 0.016201
v -0.788119 0.203369 0.016201
v -0.588119 0.003369 0.016201
v -0.788119 -0.196631 0.016201
v -0.695226 0.003369 -0.690906
v -0.553804 0.203369 -0.549485
v -0.412383 0.003369 -0.408063
v -0.553804 -0.196631 -0.549485
# 32 vertices
g (null)
f 1 6 5
f 1 2 6
f 2 7 6
f 2 3 7
f 3 8 7
f 3 4 8
f 4 5 8
f 4 1 5
f 5 10 9
f 5 6 10
f 6 11 10
f 6 7 11
f 7 12 11
f 7 8 12
f 8 9 12
f 8 5 9
f 9 14 13
f 9 10 14
f 10 15 14
f 10 11 15
f 11 16 15
f 11 12 16
f 12 13 16
f 12 9 13
f 13 18 17
f 13 14 18
f 14 19 18
f 14 15 19
f 15 20 19
f 15 16 20
f 16 17 20
f 16 13 17
f 17 22 21
f 17 18 22
f 18 23 22
f 18 19 23
f 19 24 23
f 19 20 24
f 20 21 24
f 20 17 21
f 21 26 25
f 21 22 26
f 22 27 26
f 22 23 27
f 23 28 27
f 23 24 28
f 24 25 28
f 24 21 25
f 25 30 29
f 25 26 30
f 26 31 30
f 26 27 31
f 27 32 31
f 27 28 32
f 28 29 32
f 28 25 29
f 29 2 1
f 29 30 2
f 30 3 2
f 30 31 3
f 31 4 3
f 31 32 4
f 32 1 4
f 32 29 1
# 64 faces
g

View File

@@ -0,0 +1,11 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-8

View File

@@ -0,0 +1,24 @@
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.bn.Sample17_7;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int f6=0x7f020000;
public static final int icon=0x7f020001;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">Sample17_7</string>
</resources>

View File

@@ -0,0 +1,238 @@
package com.bn.Sample17_7;
import android.opengl.Matrix;
//物体的AABB包围盒
public class AABB3
{
MyVector3f min;
MyVector3f max;
//空参构造器
AABB3(){
min = new MyVector3f();
max = new MyVector3f();
empty();
}
//参数为顶点数组的构造器
AABB3(float[] vertices){
min = new MyVector3f();
max = new MyVector3f();
empty();
//将所有的点加入包围盒
for(int i=0; i<vertices.length; i+=3){
this.add(vertices[i], vertices[i+1], vertices[i+2]);
}
}
//清空AABB
public void empty(){
min.x = min.y = min.z = Float.POSITIVE_INFINITY;//将最小点设为最大值
max.x = max.y = max.z = Float.NEGATIVE_INFINITY;//将最大点设为最小值
}
//将单个点加入到AABB中并在必要的时候扩展AABB以包含每个点
public void add(MyVector3f p){
if (p.x < min.x) { min.x = p.x; }
if (p.x > max.x) { max.x = p.x; }
if (p.y < min.y) { min.y = p.y; }
if (p.y > max.y) { max.y = p.y; }
if (p.z < min.z) { min.z = p.z; }
if (p.z > max.z) { max.z = p.z; }
}
public void add(float x, float y, float z){
if (x < min.x) { min.x = x; }
if (x > max.x) { max.x = x; }
if (y < min.y) { min.y = y; }
if (y > max.y) { max.y = y; }
if (z < min.z) { min.z = z; }
if (z > max.z) { max.z = z; }
}
//获取AABB所有顶点坐标的方法
public MyVector3f[] getAllCorners(){
MyVector3f[] result = new MyVector3f[8];
for(int i=0; i<8; i++){
result[i] = getCorner(i);
}
return result;
}
//获取AABB第i个顶点坐标的方法
public MyVector3f getCorner(int i){
if(i<0||i>7){//检查i是否合法
return null;
}
return new MyVector3f(
((i & 1) == 0) ? max.x : min.x,
((i & 2) == 0) ? max.y : min.y,
((i & 4) == 0) ? max.z : min.z
);
}
//通过当前仿射变换矩阵求得仿射变换后的AABB包围盒的方法
public AABB3 setToTransformedBox(float[] m)
{
//获取所有顶点的坐标
MyVector3f[] va = this.getAllCorners();
//用于存放仿射变换后的顶点数组
float[] transformedCorners=new float[24];
//将变换前的AABB包围盒的8个顶点与仿射变换矩阵m相乘得到仿射变换后的OBB包围盒的所有顶点
float[] tmpResult=new float[4];
int count=0;
for(int i=0;i<va.length;i++){
float[] point=new float[]{va[i].x,va[i].y,va[i].z,1};//将顶点转换成齐次坐标
Matrix.multiplyMV(tmpResult, 0, m, 0, point, 0);
transformedCorners[count++]=tmpResult[0];
transformedCorners[count++]=tmpResult[1];
transformedCorners[count++]=tmpResult[2];
}
//通过构造器将OBB包围盒转换成AABB包围盒并返回
return new AABB3(transformedCorners);
}
public float getXSize(){//获取x方向大小
return max.x - min.x;
}
public float getYSize(){//获取y方向大小
return max.y - min.y;
}
public float getZSize(){//获取z方向大小
return max.z - min.z;
}
public MyVector3f getSize(){//获取对角线向量
return max.minus(min);
}
//获取包围盒的中心点坐标的方法
public MyVector3f getCenter(){
return (min.add(max)).multiK(0.5f);
}
/*
* Woo提出的方法先判断矩形边界框的哪个面会相交
* 再检测射线与包含这个面的平面的相交性。
* 如果交点在盒子中,那么射线与矩形边界框相交,
* 否则不存在相交
*/
//和参数射线的相交性测试,如果不相交则返回值是一个非常大的数(大于1)
//如果相交返回相交时间t
//t为0-1之间的值
public float rayIntersect(
MyVector3f rayStart,//射线起点
MyVector3f rayDir,//射线长度和方向
MyVector3f returnNormal//可选的,相交点处法向量
){
//如果未相交则返回这个大数
final float kNoIntersection = Float.POSITIVE_INFINITY;
//检查点在矩形边界内的情况,并计算到每个面的距离
boolean inside = true;
float xt, xn = 0.0f;
if(rayStart.x<min.x){
xt = min.x - rayStart.x;
if(xt>rayDir.x){ return kNoIntersection; }
xt /= rayDir.x;
inside = false;
xn = -1.0f;
}
else if(rayStart.x>max.x){
xt = max.x - rayStart.x;
if(xt<rayDir.x){ return kNoIntersection; }
xt /= rayDir.x;
inside = false;
xn = 1.0f;
}
else{
xt = -1.0f;
}
float yt, yn = 0.0f;
if(rayStart.y<min.y){
yt = min.y - rayStart.y;
if(yt>rayDir.y){ return kNoIntersection; }
yt /= rayDir.y;
inside = false;
yn = -1.0f;
}
else if(rayStart.y>max.y){
yt = max.y - rayStart.y;
if(yt<rayDir.y){ return kNoIntersection; }
yt /= rayDir.y;
inside = false;
yn = 1.0f;
}
else{
yt = -1.0f;
}
float zt, zn = 0.0f;
if(rayStart.z<min.z){
zt = min.z - rayStart.z;
if(zt>rayDir.z){ return kNoIntersection; }
zt /= rayDir.z;
inside = false;
zn = -1.0f;
}
else if(rayStart.z>max.z){
zt = max.z - rayStart.z;
if(zt<rayDir.z){ return kNoIntersection; }
zt /= rayDir.z;
inside = false;
zn = 1.0f;
}
else{
zt = -1.0f;
}
//是否在矩形边界框内?
if(inside){
if(returnNormal != null){
returnNormal = rayDir.multiK(-1);
returnNormal.normalize();
}
return 0.0f;
}
//选择最远的平面————发生相交的地方
int which = 0;
float t = xt;
if(yt>t){
which = 1;
t=yt;
}
if(zt>t){
which = 2;
t=zt;
}
switch(which){
case 0://和yz平面相交
{
float y=rayStart.y+rayDir.y*t;
if(y<min.y||y>max.y){return kNoIntersection;}
float z=rayStart.z+rayDir.z*t;
if(z<min.z||z>max.z){return kNoIntersection;}
if(returnNormal != null){
returnNormal.x = xn;
returnNormal.y = 0.0f;
returnNormal.z = 0.0f;
}
}
break;
case 1://和xz平面相交
{
float x=rayStart.x+rayDir.x*t;
if(x<min.x||x>max.x){return kNoIntersection;}
float z=rayStart.z+rayDir.z*t;
if(z<min.z||z>max.z){return kNoIntersection;}
if(returnNormal != null){
returnNormal.x = 0.0f;
returnNormal.y = yn;
returnNormal.z = 0.0f;
}
}
break;
case 2://和xy平面相交
{
float x=rayStart.x+rayDir.x*t;
if(x<min.x||x>max.x){return kNoIntersection;}
float y=rayStart.y+rayDir.y*t;
if(y<min.y||y>max.y){return kNoIntersection;}
if(returnNormal != null){
returnNormal.x = 0.0f;
returnNormal.y = 0.0f;
returnNormal.z = zn;
}
}
break;
}
return t;//返回相交点参数值
}
}

View File

@@ -0,0 +1,40 @@
package com.bn.Sample17_7;
import javax.vecmath.Vector3f;
import com.bulletphysics.collision.shapes.CollisionShape;
import com.bulletphysics.dynamics.DiscreteDynamicsWorld;
import com.bulletphysics.dynamics.RigidBody;
import com.bulletphysics.dynamics.RigidBodyConstructionInfo;
import com.bulletphysics.linearmath.DefaultMotionState;
import com.bulletphysics.linearmath.Transform;
public class AddRigidBody {
RigidBody body;
public AddRigidBody(CollisionShape shape,float mass,DiscreteDynamicsWorld dynamicsWorld,
float restitution,float friction,Vector3f origin){
boolean isDynamic = (mass!=0);
Vector3f localInertia = new Vector3f(0,0,0);
if(isDynamic){
shape.calculateLocalInertia(mass, localInertia);
}
//创建刚体的初始变换对象
Transform groundTransform = new Transform();
groundTransform.setIdentity();
groundTransform.origin.set(origin);
//创建刚体的运动状态对象
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);
//创建刚体信息对象
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, shape, localInertia);
//创建刚体
body = new RigidBody(rbInfo);
//设置反弹系数
body.setRestitution(restitution);
//设置摩擦系数
body.setFriction(friction);
//将刚体添加进物理世界
dynamicsWorld.addRigidBody(body);
}
}

View File

@@ -0,0 +1,22 @@
package com.bn.Sample17_7;
public enum BodyPartIndex {
BODYPART_HEAD,//头
BODYPART_SPINE,//脊柱
BODYPART_PELVIS,//骨盆
BODYPART_LEFT_UPPER_ARM,//左大臂
BODYPART_RIGHT_UPPER_ARM,//右大臂
BODYPART_LEFT_LOWER_ARM,//左小臂
BODYPART_RIGHT_LOWER_ARM,//右小臂
BODYPART_LEFT_UPPER_LEG,//左大腿
BODYPART_RIGHT_UPPER_LEG,//右大腿
BODYPART_LEFT_LOWER_LEG,//左小腿
BODYPART_RIGHT_LOWER_LEG,//右小腿
BODYPART_COUNT;
}

View File

@@ -0,0 +1,19 @@
package com.bn.Sample17_7;
public class Constant
{
final static float UNIT_SIZE=0.5f;//基本尺寸单元
final static float TIME_STEP=1.0f/60;//模拟的周期
final static int MAX_SUB_STEPS=5;//最大的子步数
final static float EYE_X=-5;//观察者的位置x
final static float EYE_Y=10;//观察者的位置y
final static float EYE_Z=10;//观察者的位置z
final static float TARGET_X=0;//目标的位置x
final static float TARGET_Y=0;//目的位置Y
final static float TARGET_Z=0;//目标的位置Z
public static final float MOVE_SPAN=0.2f;//摄像机每次移动的位移
public static final float DISTANCE=3.0f;//摄像机位置距离观察目标点的距离
}

View File

@@ -0,0 +1,286 @@
package com.bn.Sample17_7;
import javax.vecmath.Vector3f;
import com.bulletphysics.BulletGlobals;
import com.bulletphysics.collision.shapes.CapsuleShape;
import com.bulletphysics.collision.shapes.CapsuleShapeX;
import com.bulletphysics.collision.shapes.CollisionShape;
import com.bulletphysics.dynamics.DynamicsWorld;
import com.bulletphysics.dynamics.RigidBody;
import com.bulletphysics.dynamics.RigidBodyConstructionInfo;
import com.bulletphysics.dynamics.constraintsolver.Generic6DofConstraint;
import com.bulletphysics.linearmath.DefaultMotionState;
import com.bulletphysics.linearmath.Transform;
public class Doll {
MySurfaceView mv;//MySurfaceView对象的引用
DynamicsWorld dynamicsWorld;//物理世界引用
CollisionShape[] bodyShapes= new CollisionShape[BodyPartIndex.BODYPART_COUNT.ordinal()];;//碰撞形状数组
RigidBody[] rigidBodies = new RigidBody[BodyPartIndex.BODYPART_COUNT.ordinal()];//刚体数组
LoadedObjectVertexNormal[] bodyForDraws;//用于绘制的物体的引用
//========属性值===========
float mass=1;//刚体的质量
//=========位置==========
float bodyCenterH=7;//整个人偶中心的高度
//===================胶囊的尺寸=============
//头部
float headR=0.5f;//头部胶囊两端半球的半径
float headH=1.25f-2*headR;//头部胶囊中间圆柱的长度
float headTH=1.25f;//头部胶囊总长度
//脊椎
float spineR=0.7f;//脊椎胶囊两端半球的半径
float spineH=2.0f-2*spineR;//脊椎胶囊中间圆柱的长度
float spineTH=2.0f;//脊椎胶囊总长度
//右大臂
float rightUpperArmR=0.3f;//右大臂胶囊两端半球的半径
float rightUpperArmH=2.0f-2*rightUpperArmR;//右大臂胶囊中间圆柱的长度
float rightUpperArmTH=2.0f;//右大臂胶囊总长度
//右小臂
float rightLowerArmR=0.3f;//右小臂胶囊两端半球的半径
float rightLowerArmH=1.7f-2*rightLowerArmR;//右小臂胶囊中间圆柱的长度
float rightLowerArmTH=1.7f;//右小臂胶囊总长度
//左大臂
float leftUpperArmR=0.3f;//左大臂胶囊两端半球的半径
float leftUpperArmH=2.0f-2*leftUpperArmR;//左大臂胶囊中间圆柱的长度
float leftUpperArmTH=2.0f;//左大臂胶囊总长度
//左小臂
float leftLowerArmR=0.3f;//左小臂胶囊两端半球的半径
float leftLowerArmH=1.7f-2*leftLowerArmR;//左小臂胶囊中间圆柱的长度
float leftLowerArmTH=1.7f;//左小臂胶囊总长度
//骨盆
float pelvisR=0.8f;//骨盆胶囊两端半球的半径
float pelvisH=2.5f-pelvisR*2;//骨盆胶囊中间圆柱的长度
float pelvisTH=2.5f;//骨盆胶囊总长度
//右大腿
float rightUpperLegR=0.3f;//右大腿胶囊两端半球的半径
float rightUpperLegH=1.7f-rightUpperLegR*2;//右大腿胶囊中间圆柱的长度
float rightUpperLegTH=1.7f;//右大腿胶囊总长度
//左大腿
float leftUpperLegR=0.3f;//左大腿胶囊两端半球的半径
float leftUpperLegH=1.7f-leftUpperLegR*2;//左大腿胶囊中间圆柱的长度
float leftUpperLegTH=1.7f;//左大腿胶囊总长度
//左小腿
float leftLowerLegR=0.3f;//左小腿胶囊两端半球的半径
float leftLowerLegH=2.0f-2*leftLowerLegR;//左小腿胶囊中间圆柱的长度
float leftLowerLegTH=2.0f;//左小腿胶囊总长度
//右小腿
float rightLowerLegR=0.3f;//右小腿胶囊两端半球的半径
float rightLowerLegH=2.0f-2*rightLowerLegR;//右小腿胶囊中间圆柱的长度
float rightLowerLegTH=2.0f;//右小腿胶囊总长度
public Doll(MySurfaceView mv,DynamicsWorld dynamicsWorld,LoadedObjectVertexNormal[] bodyForDraws){
this.mv=mv;
this.dynamicsWorld=dynamicsWorld;
this.bodyForDraws=bodyForDraws;
initShapes();
initRigidBodys();
}
public void initShapes(){
bodyShapes[BodyPartIndex.BODYPART_HEAD.ordinal()] = new CapsuleShape(headR,headH);
bodyShapes[BodyPartIndex.BODYPART_SPINE.ordinal()] = new CapsuleShape(spineR,spineH);
bodyShapes[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()] = new CapsuleShapeX(rightUpperArmR,rightUpperArmH);
bodyShapes[BodyPartIndex.BODYPART_RIGHT_LOWER_ARM.ordinal()] = new CapsuleShapeX(rightLowerArmR,rightLowerArmH);
bodyShapes[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()] = new CapsuleShapeX(leftUpperArmR,leftUpperArmH);
bodyShapes[BodyPartIndex.BODYPART_LEFT_LOWER_ARM.ordinal()] = new CapsuleShapeX(leftLowerArmR,leftLowerArmH);
bodyShapes[BodyPartIndex.BODYPART_PELVIS.ordinal()] = new CapsuleShape(pelvisR,pelvisH);
bodyShapes[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()] = new CapsuleShape(rightUpperLegR,rightUpperLegH);
bodyShapes[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()] = new CapsuleShape(leftUpperLegR,leftUpperLegH);
bodyShapes[BodyPartIndex.BODYPART_LEFT_LOWER_LEG.ordinal()] = new CapsuleShape(leftLowerLegR,leftLowerLegH);
bodyShapes[BodyPartIndex.BODYPART_RIGHT_LOWER_LEG.ordinal()] = new CapsuleShape(rightLowerLegR,rightLowerLegH);
}
public void initRigidBodys(){
//====================创建刚体=========================
//头
Transform tempTrans = new Transform();
tempTrans.setIdentity();
tempTrans.origin.set(0,bodyCenterH+spineTH+headTH/2,0);
rigidBodies[BodyPartIndex.BODYPART_HEAD.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_HEAD.ordinal()]);
//脊椎
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(0,bodyCenterH+spineTH/2,0));
rigidBodies[BodyPartIndex.BODYPART_SPINE.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_SPINE.ordinal()]);
//右大臂
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(spineR+rightUpperArmTH/2,bodyCenterH+spineTH-spineR,0));
rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()]);
//右小臂
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(spineR+rightUpperArmTH+rightLowerArmTH/2,bodyCenterH+spineTH-spineR,0));
rigidBodies[BodyPartIndex.BODYPART_RIGHT_LOWER_ARM.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_RIGHT_LOWER_ARM.ordinal()]);
//左大臂
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(-spineR-leftUpperArmTH/2,bodyCenterH+spineTH-spineR,0));
rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()]);
//左小臂
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(-spineR-leftUpperArmTH-leftLowerArmTH/2,bodyCenterH+spineTH-spineR,0));
rigidBodies[BodyPartIndex.BODYPART_LEFT_LOWER_ARM.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_LEFT_LOWER_ARM.ordinal()]);
//骨盆
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(0,bodyCenterH-pelvisTH/2,0));
rigidBodies[BodyPartIndex.BODYPART_PELVIS.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_PELVIS.ordinal()]);
//右大腿
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(pelvisR+rightUpperLegR,bodyCenterH-pelvisTH-rightUpperLegH/2+pelvisR,0));
rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()]);
//左大腿
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(-pelvisR-leftUpperLegR,bodyCenterH-pelvisTH-rightUpperLegH/2+pelvisR,0));
rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()]);
//左小腿
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(-pelvisR-leftUpperLegR,bodyCenterH-pelvisTH-leftUpperLegTH-leftLowerLegTH/2+pelvisR,0));
rigidBodies[BodyPartIndex.BODYPART_LEFT_LOWER_LEG.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_LEFT_LOWER_LEG.ordinal()]);
//右小腿
tempTrans.setIdentity();
tempTrans.origin.set(new Vector3f(pelvisR+rightUpperLegR,bodyCenterH-pelvisTH-rightUpperLegTH-rightLowerLegTH/2+pelvisR,0));
rigidBodies[BodyPartIndex.BODYPART_RIGHT_LOWER_LEG.ordinal()] = addRigidBody(mass, tempTrans, bodyShapes[BodyPartIndex.BODYPART_RIGHT_LOWER_LEG.ordinal()]);
//============添加约束=============
Generic6DofConstraint joint6DOF;
Transform localA = new Transform();
Transform localB = new Transform();
//头部和脊椎约束
localA.setIdentity();
localB.setIdentity();
localA.origin.set(0f, -headTH/2, 0f);
localB.origin.set(0,spineTH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_HEAD.ordinal()], rigidBodies[BodyPartIndex.BODYPART_SPINE.ordinal()], localA, localB, true);
Vector3f limitTrans = new Vector3f();
limitTrans.set(-BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.FLT_EPSILON, -BulletGlobals.SIMD_PI * 0.1f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.SIMD_PI * 0.2f, BulletGlobals.FLT_EPSILON, BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//右大臂和脊椎
localA.setIdentity();
localB.setIdentity();
localA.origin.set(spineR,spineTH/2-rightUpperArmR*2, 0f);
localB.origin.set(-rightUpperArmTH/2,0,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_SPINE.ordinal()], rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.FLT_EPSILON,-BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.4f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.FLT_EPSILON,BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.4f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//右大臂和右小臂
localA.setIdentity();
localB.setIdentity();
localA.origin.set(rightUpperArmTH/2,0, 0f);
localB.origin.set(-rightLowerArmTH/2,0,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()], rigidBodies[BodyPartIndex.BODYPART_RIGHT_LOWER_ARM.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.FLT_EPSILON,-BulletGlobals.SIMD_PI * 0.4f, -BulletGlobals.SIMD_PI * 0.05f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.FLT_EPSILON,BulletGlobals.SIMD_PI * 0.4f, BulletGlobals.SIMD_PI * 0.05f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//左大臂和脊椎
localA.setIdentity();
localB.setIdentity();
localA.origin.set(-spineR,spineTH/2-leftUpperArmR*2, 0f);
localB.origin.set(leftUpperArmTH/2,0,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_SPINE.ordinal()], rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()], localA, localB, true);
limitTrans.set( -BulletGlobals.FLT_EPSILON,-BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.4f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set( BulletGlobals.FLT_EPSILON,BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.4f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//左小臂和左大臂
localA.setIdentity();
localB.setIdentity();
localA.origin.set(-leftUpperArmTH/2,0, 0f);
localB.origin.set(leftLowerArmTH/2,0,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()], rigidBodies[BodyPartIndex.BODYPART_LEFT_LOWER_ARM.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.FLT_EPSILON,-BulletGlobals.SIMD_PI * 0.4f, -BulletGlobals.SIMD_PI * 0.05f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.FLT_EPSILON,BulletGlobals.SIMD_PI * 0.4f, BulletGlobals.SIMD_PI * 0.05f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//脊椎和骨盆
localA.setIdentity();
localB.setIdentity();
localA.origin.set(0,-spineTH/2,0f);
localB.origin.set(0,pelvisTH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_SPINE.ordinal()], rigidBodies[BodyPartIndex.BODYPART_PELVIS.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.SIMD_PI * 0.2f, -BulletGlobals.SIMD_PI/2, -BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.SIMD_PI * 0.2f, BulletGlobals.SIMD_PI/2, BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//骨盆和右大腿
localA.setIdentity();
localB.setIdentity();
localA.origin.set(pelvisR+rightUpperLegR,-pelvisH/2,0f);
localB.origin.set(0,rightUpperLegH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_PELVIS.ordinal()], rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//盆骨和左大腿
localA.setIdentity();
localB.setIdentity();
localA.origin.set(-pelvisR-leftUpperLegR,-pelvisH/2,0f);
localB.origin.set(0,rightUpperLegH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_PELVIS.ordinal()], rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.1f, -BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.1f, BulletGlobals.SIMD_PI * 0.2f);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//左大腿和左小腿
localA.setIdentity();
localB.setIdentity();
localA.origin.set(0,-leftUpperLegTH/2,0f);
localB.origin.set(0,leftLowerLegTH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()], rigidBodies[BodyPartIndex.BODYPART_LEFT_LOWER_LEG.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.SIMD_PI * 0.5f, -BulletGlobals.FLT_EPSILON, -BulletGlobals.FLT_EPSILON);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.FLT_EPSILON, BulletGlobals.FLT_EPSILON, BulletGlobals.FLT_EPSILON);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
//右大腿和右小腿
localA.setIdentity();
localB.setIdentity();
localA.origin.set(0,-rightUpperLegTH/2,0f);
localB.origin.set(0,rightLowerLegTH/2,0);
joint6DOF = new Generic6DofConstraint(rigidBodies[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()], rigidBodies[BodyPartIndex.BODYPART_RIGHT_LOWER_LEG.ordinal()], localA, localB, true);
limitTrans.set(-BulletGlobals.SIMD_PI * 0.5f, -BulletGlobals.FLT_EPSILON, -BulletGlobals.FLT_EPSILON);
joint6DOF.setAngularLowerLimit(limitTrans);
limitTrans.set(BulletGlobals.FLT_EPSILON, BulletGlobals.FLT_EPSILON, BulletGlobals.FLT_EPSILON);
joint6DOF.setAngularUpperLimit(limitTrans);
dynamicsWorld.addConstraint(joint6DOF, true);
}
private RigidBody addRigidBody(float mass, Transform startTransform, CollisionShape shape) {
boolean isDynamic = (mass != 0f);
Vector3f localInertia = new Vector3f();
localInertia.set(0f, 0f, 0f);
if (isDynamic) {
shape.calculateLocalInertia(mass, localInertia);
}
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, shape, localInertia);
rbInfo.additionalDamping = true;
RigidBody body = new RigidBody(rbInfo);
body.setRestitution(0.0f);
body.setFriction(0.8f);
dynamicsWorld.addRigidBody(body);
return body;
}
public void drawSelf(int checkedIndex){
MatrixState.pushMatrix();
for(int i=0;i<bodyForDraws.length;i++){
LoadedObjectVertexNormal lovo = bodyForDraws[i];
if(i==checkedIndex){
lovo.changeColor(true);
lovo.drawSelf(rigidBodies[i]);
}else{
lovo.changeColor(false);
lovo.drawSelf(rigidBodies[i]);
}
}
MatrixState.popMatrix();
}
}

View File

@@ -0,0 +1,47 @@
package com.bn.Sample17_7;
public class IntersectantUtil {
/*
* 1、通过在屏幕上的触控位置计算对应的近平面上坐标
* 以便求出AB两点在摄像机坐标系中的坐标
* 2、将AB两点在摄像机中坐标系中的坐标乘以摄像机矩阵的逆矩阵
* 以便求得AB两点在世界坐标系中的坐标
*/
public static float[] calculateABPosition
(
float x,//触屏X坐标
float y,//触屏Y坐标
float w,// 屏幕宽度
float h,// 屏幕高度
float left,//视角left值
float top,//视角top值
float near,//视角near值
float far//视角far值
)
{
//求视口的坐标中心在原点时,触控点的坐标
float x0=x-w/2;
float y0=h/2-y;
//计算对应的near面上的x、y坐标
float xNear=2*x0*left/w;
float yNear=2*y0*top/h;
//计算对应的far面上的x、y坐标
float ratio=far/near;
float xFar=ratio*xNear;
float yFar=ratio*yNear;
//摄像机坐标系中A的坐标
float ax=xNear;
float ay=yNear;
float az=-near;
//摄像机坐标系中B的坐标
float bx=xFar;
float by=yFar;
float bz=-far;
//通过摄像机坐标系中A、B两点的坐标求世界坐标系中A、B两点的坐标
float[] A = MatrixState.fromPtoPreP(new float[] { ax, ay, az });
float[] B = MatrixState.fromPtoPreP(new float[] { bx, by, bz });
return new float[] {//返回最终的AB两点坐标
A[0],A[1],A[2],
B[0],B[1],B[2]
};
}
}

View File

@@ -0,0 +1,175 @@
package com.bn.Sample17_7;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import android.content.res.Resources;
import android.util.Log;
public class LoadUtil
{
//求两个向量的叉积
public static float[] getCrossProduct(float x1,float y1,float z1,float x2,float y2,float z2)
{
//求出两个矢量叉积矢量在XYZ轴的分量ABC
float A=y1*z2-y2*z1;
float B=z1*x2-z2*x1;
float C=x1*y2-x2*y1;
return new float[]{A,B,C};
}
//向量规格化
public static float[] vectorNormal(float[] vector)
{
//求向量的模
float module=(float)Math.sqrt(vector[0]*vector[0]+vector[1]*vector[1]+vector[2]*vector[2]);
return new float[]{vector[0]/module,vector[1]/module,vector[2]/module};
}
//从obj文件中加载携带顶点信息的物体并自动计算每个顶点的平均法向量
public static LoadedObjectVertexNormal loadFromFile(String fname, Resources r,MySurfaceView mv)
{
//加载后物体的引用
LoadedObjectVertexNormal lo=null;
//原始顶点坐标列表--直接从obj文件中加载
ArrayList<Float> alv=new ArrayList<Float>();
//顶点组装面索引列表--根据面的信息从文件中加载
ArrayList<Integer> alFaceIndex=new ArrayList<Integer>();
//结果顶点坐标列表--按面组织好
ArrayList<Float> alvResult=new ArrayList<Float>();
//平均前各个索引对应的点的法向量集合Map
//此HashMap的key为点的索引 value为点所在的各个面的法向量的集合
HashMap<Integer,HashSet<Normal>> hmn=new HashMap<Integer,HashSet<Normal>>();
try
{
InputStream in=r.getAssets().open(fname);
InputStreamReader isr=new InputStreamReader(in);
BufferedReader br=new BufferedReader(isr);
String temps=null;
//扫面文件,根据行类型的不同执行不同的处理逻辑
while((temps=br.readLine())!=null)
{
//用空格分割行中的各个组成部分
String[] tempsa=temps.split("[ ]+");
if(tempsa[0].trim().equals("v"))
{//此行为顶点坐标
//若为顶点坐标行则提取出此顶点的XYZ坐标添加到原始顶点坐标列表中
alv.add(Float.parseFloat(tempsa[1]));
alv.add(Float.parseFloat(tempsa[2]));
alv.add(Float.parseFloat(tempsa[3]));
}
else if(tempsa[0].trim().equals("f"))
{//此行为三角形面
/*
*若为三角形面行则根据 组成面的顶点的索引从原始顶点坐标列表中
*提取相应的顶点坐标值添加到结果顶点坐标列表中,同时根据三个
*顶点的坐标计算出此面的法向量并添加到平均前各个索引对应的点
*的法向量集合组成的Map中
*/
int[] index=new int[3];//三个顶点索引值的数组
//计算第0个顶点的索引并获取此顶点的XYZ三个坐标
index[0]=Integer.parseInt(tempsa[1].split("/")[0])-1;
float x0=alv.get(3*index[0]);
float y0=alv.get(3*index[0]+1);
float z0=alv.get(3*index[0]+2);
alvResult.add(x0);
alvResult.add(y0);
alvResult.add(z0);
//计算第1个顶点的索引并获取此顶点的XYZ三个坐标
index[1]=Integer.parseInt(tempsa[2].split("/")[0])-1;
float x1=alv.get(3*index[1]);
float y1=alv.get(3*index[1]+1);
float z1=alv.get(3*index[1]+2);
alvResult.add(x1);
alvResult.add(y1);
alvResult.add(z1);
//计算第2个顶点的索引并获取此顶点的XYZ三个坐标
index[2]=Integer.parseInt(tempsa[3].split("/")[0])-1;
float x2=alv.get(3*index[2]);
float y2=alv.get(3*index[2]+1);
float z2=alv.get(3*index[2]+2);
alvResult.add(x2);
alvResult.add(y2);
alvResult.add(z2);
//记录此面的顶点索引
alFaceIndex.add(index[0]);
alFaceIndex.add(index[1]);
alFaceIndex.add(index[2]);
//通过三角形面两个边向量0-10-2求叉积得到此面的法向量
//求0号点到1号点的向量
float vxa=x1-x0;
float vya=y1-y0;
float vza=z1-z0;
//求0号点到2号点的向量
float vxb=x2-x0;
float vyb=y2-y0;
float vzb=z2-z0;
//通过求两个向量的叉积计算法向量
float[] vNormal=vectorNormal(getCrossProduct
(
vxa,vya,vza,vxb,vyb,vzb
));
for(int tempInxex:index)
{//记录每个索引点的法向量到平均前各个索引对应的点的法向量集合组成的Map中
//获取当前索引对应点的法向量集合
HashSet<Normal> hsn=hmn.get(tempInxex);
if(hsn==null)
{//若集合不存在则创建
hsn=new HashSet<Normal>();
}
//将此点的法向量添加到集合中
//由于Normal类重写了equals方法因此同样的法向量不会重复出现在此点
//对应的法向量集合中
hsn.add(new Normal(vNormal[0],vNormal[1],vNormal[2]));
//将集合放进HsahMap中
hmn.put(tempInxex, hsn);
}
}
}
//生成顶点数组
int size=alvResult.size();
float[] vXYZ=new float[size];
for(int i=0;i<size;i++)
{
vXYZ[i]=alvResult.get(i);
}
//生成法向量数组
float[] nXYZ=new float[alFaceIndex.size()*3];
int c=0;
for(Integer i:alFaceIndex)
{
//根据当前点的索引从Map中取出一个法向量的集合
HashSet<Normal> hsn=hmn.get(i);
//求出平均法向量
float[] tn=Normal.getAverage(hsn);
//将计算出的平均法向量存放到法向量数组中
nXYZ[c++]=tn[0];
nXYZ[c++]=tn[1];
nXYZ[c++]=tn[2];
}
//创建3D物体对象
lo=new LoadedObjectVertexNormal(mv,vXYZ,nXYZ);
}
catch(Exception e)
{
Log.d("load error", "load error");
e.printStackTrace();
}
return lo;
}
}

View File

@@ -0,0 +1,278 @@
package com.bn.Sample17_7;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.vecmath.Quat4f;
import javax.vecmath.Vector3f;
import android.opengl.GLES20;
import com.bulletphysics.collision.shapes.CollisionShape;
import com.bulletphysics.collision.shapes.TriangleIndexVertexArray;
import com.bulletphysics.dynamics.RigidBody;
import com.bulletphysics.dynamics.constraintsolver.Point2PointConstraint;
import com.bulletphysics.extras.gimpact.GImpactMeshShape;
import com.bulletphysics.linearmath.Transform;
//加载后的物体——仅携带顶点信息,颜色随机
public class LoadedObjectVertexNormal
{
int mProgram;//自定义渲染管线程序id
int muMVPMatrixHandle;//总变换矩阵引用id
int muMMatrixHandle;//位置、旋转变换矩阵
int maCameraHandle; //摄像机位置属性引用id
int maPositionHandle; //顶点位置属性引用id
int muColorHandle;
int maNormalHandle; //顶点法向量属性引用
int maLightLocationHandle;//光源位置属性引用
String mVertexShader;//顶点着色器
String mFragmentShader;//片元着色器
private FloatBuffer mVertexBuffer;//顶点坐标数据缓冲
private FloatBuffer[] mColorBuffer=new FloatBuffer[2];//顶点着色数据缓冲
private FloatBuffer mNormalBuffer;
int vCount=0;
CollisionShape loadShape;
float[] vertices;
float[] normals;
MySurfaceView mv;
//==========拾取================
float midX;//中心点坐标
float midY;
float midZ;
RigidBody body;
Point2PointConstraint p2p;
boolean isPicked=false;
AABB3 preBox;//仿射变换之前的包围盒
float[] m = new float[16];//仿射变换的矩阵
float[] color=new float[]{1,1,1,1};//顶点颜色
public LoadedObjectVertexNormal(MySurfaceView mv,float[] vertices,float[] normals)
{
this.mv=mv;
this.vertices=vertices;
this.normals=normals;
//顶点坐标数据的初始化================begin============================
vCount=vertices.length/3;
//初始化包围盒
preBox = new AABB3(vertices);
//创建顶点坐标数据缓冲
//vertices.length*4是因为一个整数四个字节
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4);
vbb.order(ByteOrder.nativeOrder());//设置字节顺序
mVertexBuffer = vbb.asFloatBuffer();//转换为Float型缓冲
mVertexBuffer.put(vertices);//向缓冲区中放入顶点坐标数据
mVertexBuffer.position(0);//设置缓冲区起始位置
//特别提示由于不同平台字节顺序不同数据单元不是字节的一定要经过ByteBuffer
//转换关键是要通过ByteOrder设置nativeOrder(),否则有可能会出问题
//顶点坐标数据的初始化================end============================
//顶点着色数据的初始化================begin============================
float colors[]=new float[vCount*4];//顶点颜色值数组每个顶点4个色彩值RGBA
for(int i=0;i<vCount;i++)
{
colors[i*4]=1;//(float)(1*Math.random());
colors[i*4+1]=0;//(float)(1*Math.random());
colors[i*4+2]=0;//(float)(1*Math.random());
colors[i*4+3]=1;
};
//创建顶点着色数据缓冲
//vertices.length*4是因为一个int型整数四个字节
ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length*4);
cbb.order(ByteOrder.nativeOrder());//设置字节顺序
mColorBuffer[0] = cbb.asFloatBuffer();//转换为int型缓冲
mColorBuffer[0].put(colors);//向缓冲区中放入顶点着色数据
mColorBuffer[0].position(0);//设置缓冲区起始位置
for(int i=0;i<vCount;i++)
{
colors[i*4]=color[0];
colors[i*4+1]=color[1];
colors[i*4+2]=color[2];
colors[i*4+3]=color[3];
};
//创建顶点着色数据缓冲
//vertices.length*4是因为一个int型整数四个字节
cbb = ByteBuffer.allocateDirect(colors.length*4);
cbb.order(ByteOrder.nativeOrder());//设置字节顺序
mColorBuffer[1] = cbb.asFloatBuffer();//转换为int型缓冲
mColorBuffer[1].put(colors);//向缓冲区中放入顶点着色数据
mColorBuffer[1].position(0);//设置缓冲区起始位置
//特别提示由于不同平台字节顺序不同数据单元不是字节的一定要经过ByteBuffer
//转换关键是要通过ByteOrder设置nativeOrder(),否则有可能会出问题
//顶点着色数据的初始化================end============================
//顶点法向量数据的初始化================begin============================
ByteBuffer nbb = ByteBuffer.allocateDirect(normals.length*4);
nbb.order(ByteOrder.nativeOrder());//设置字节顺序
mNormalBuffer = nbb.asFloatBuffer();//转换为Float型缓冲
mNormalBuffer.put(normals);//向缓冲区中放入顶点法向量数据
mNormalBuffer.position(0);//设置缓冲区起始位置
//刚体顶点缓冲
ByteBuffer gVertices=ByteBuffer.allocateDirect(vCount*3*4).order(ByteOrder.nativeOrder());
for(int i=0;i<vertices.length;i++)
{
gVertices.putFloat(i*4,vertices[i]);
}
gVertices.position(0);
//刚体索引缓冲
ByteBuffer gIndices=ByteBuffer.allocateDirect(vCount*4).order(ByteOrder.nativeOrder());
for(int i=0;i<vCount;i++)
{
gIndices.putInt(i);
}
gIndices.position(0);
//创建碰撞三角形组
int vertStride = 4*3;
int indexStride = 4*3;
TriangleIndexVertexArray indexVertexArrays=
new TriangleIndexVertexArray
(
vCount/3,
gIndices,
indexStride,
vCount,
gVertices,
vertStride
);
//创建曲面形状
GImpactMeshShape trimesh = new GImpactMeshShape(indexVertexArrays);
trimesh.updateBound();
loadShape =trimesh;
intShader(mv);
}
//初始化shader
public void intShader(MySurfaceView mv)
{
//基于顶点着色器与片元着色器创建程序
mVertexShader=ShaderUtil.loadFromAssetsFile("vertex_color.sh", mv.getResources());
ShaderUtil.checkGlError("==ss==");
//加载片元着色器的脚本内容
mFragmentShader=ShaderUtil.loadFromAssetsFile("frag_color.sh", mv.getResources());
ShaderUtil.checkGlError("==ss==");
mProgram = ShaderUtil.createProgram(mVertexShader, mFragmentShader);
//获取程序中顶点位置属性引用id
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
//获取程序中总变换矩阵引用id
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
//获取位置、旋转变换矩阵引用
muMMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMMatrix");
muColorHandle=GLES20.glGetUniformLocation(mProgram, "aColor");
//获取程序中顶点法向量属性引用
maNormalHandle= GLES20.glGetAttribLocation(mProgram, "aNormal");
//获取程序中光源位置引用
maLightLocationHandle=GLES20.glGetUniformLocation(mProgram, "uLightLocation");
//获取程序中摄像机位置引用
maCameraHandle=GLES20.glGetUniformLocation(mProgram, "uCamera");
}
public void drawSelf(RigidBody body)
{
this.body=body;
MatrixState.pushMatrix();
Transform trans = body.getMotionState().getWorldTransform(new Transform());
MatrixState.translate(trans.origin.x,trans.origin.y, trans.origin.z);
Quat4f ro=trans.getRotation(new Quat4f());
if(ro.x!=0||ro.y!=0||ro.z!=0)
{
float[] fa=SYSUtil.fromSYStoAXYZ(ro);
if(!Float.isInfinite(fa[0])&&!Float.isInfinite(fa[1])&&!Float.isInfinite(fa[2])&&
!Float.isNaN(fa[0])&&!Float.isNaN(fa[1])&&!Float.isNaN(fa[2])){
MatrixState.rotate(fa[0],fa[1],fa[2],fa[3]);
}
}
copyM();
//制定使用某套shader程序
GLES20.glUseProgram(mProgram);
//将最终变换矩阵传入shader程序
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, MatrixState.getFinalMatrix(), 0);
//将位置、旋转变换矩阵传入着色器程序
GLES20.glUniformMatrix4fv(muMMatrixHandle, 1, false, MatrixState.getMMatrix(), 0);
//将光源位置传入着色器程序
GLES20.glUniform3fv(maLightLocationHandle, 1, MatrixState.lightPositionFB);
//将摄像机位置传入着色器程序
GLES20.glUniform3fv(maCameraHandle, 1, MatrixState.cameraFB);
GLES20.glUniform4fv(muColorHandle, 1, color, 0);
//为画笔指定顶点位置数据
GLES20.glVertexAttribPointer
(
maPositionHandle,
3,
GLES20.GL_FLOAT,
false,
3*4,
mVertexBuffer
);
//将顶点法向量数据传入渲染管线
GLES20.glVertexAttribPointer
(
maNormalHandle,
3,
GLES20.GL_FLOAT,
false,
3*4,
mNormalBuffer
);
//允许顶点位置数据数组
GLES20.glEnableVertexAttribArray(maPositionHandle);
GLES20.glEnableVertexAttribArray(maNormalHandle);
//绘制三角形
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vCount);
MatrixState.popMatrix();
}
public LoadedObjectVertexNormal clone(){
return new LoadedObjectVertexNormal(mv,vertices,normals);
}
//更改颜色的方法
public void changeColor(boolean flag)
{
if(body!=null && !body.isActive()&&!isPicked){
color=new float[]//蓝绿色
{
0,1,1
};
}else{
if(flag){
color=new float[]{//绿色
0,1,0,1
};
}
else{
color=new float[]{//白色
1,1,1,1
};
}
}
}
public void addPickedConstraint(){
p2p = new Point2PointConstraint(body, new Vector3f(0,0,0));
mv.dynamicsWorld.addConstraint(p2p, true);
this.isPicked=true;
}
public void removePickedConstraint(){
if(p2p!=null){
mv.dynamicsWorld.removeConstraint(p2p);
}
this.isPicked=false;
}
//获得中心点位置和长宽高的方法
public AABB3 getCurrBox(){
return preBox.setToTransformedBox(m);//获取变换后的包围盒
}
//复制变换矩阵
public void copyM(){
for(int i=0;i<16;i++){
m[i]=MatrixState.getMMatrix()[i];
}
}
}

View File

@@ -0,0 +1,193 @@
package com.bn.Sample17_7;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import android.opengl.Matrix;
//存储系统矩阵状态的类
public class MatrixState
{
private static float[] mProjMatrix = new float[16];//4x4矩阵 投影用
private static float[] mVMatrix = new float[16];//摄像机位置朝向9参数矩阵
private static float[] currMatrix;//当前变换矩阵
public static float[] lightLocation=new float[]{0,0,0};//定位光光源位置
public static FloatBuffer cameraFB;
public static FloatBuffer lightPositionFB;
//保护变换矩阵的栈
static float[][] mStack=new float[10][16];
static int stackTop=-1;
public static void setInitStack()//获取不变换初始矩阵
{
currMatrix=new float[16];
Matrix.setRotateM(currMatrix, 0, 0, 1, 0, 0);
}
public static void pushMatrix()//保护变换矩阵
{
stackTop++;
for(int i=0;i<16;i++)
{
mStack[stackTop][i]=currMatrix[i];
}
}
public static void popMatrix()//恢复变换矩阵
{
for(int i=0;i<16;i++)
{
currMatrix[i]=mStack[stackTop][i];
}
stackTop--;
}
public static void translate(float x,float y,float z)//设置沿xyz轴移动
{
Matrix.translateM(currMatrix, 0, x, y, z);
}
public static void rotate(float angle,float x,float y,float z)//设置绕xyz轴移动
{
Matrix.rotateM(currMatrix,0,angle,x,y,z);
}
public static void scale(float x,float y,float z)
{
Matrix.scaleM(currMatrix,0, x, y, z);
}
//插入自带矩阵
public static void matrix(float[] self)
{
float[] result=new float[16];
Matrix.multiplyMM(result,0,currMatrix,0,self,0);
currMatrix=result;
}
//设置摄像机
static ByteBuffer llbb= ByteBuffer.allocateDirect(3*4);
static float[] cameraLocation=new float[3];//摄像机位置
public static void setCamera
(
float cx, //摄像机位置x
float cy, //摄像机位置y
float cz, //摄像机位置z
float tx, //摄像机目标点x
float ty, //摄像机目标点y
float tz, //摄像机目标点z
float upx, //摄像机UP向量X分量
float upy, //摄像机UP向量Y分量
float upz //摄像机UP向量Z分量
)
{
Matrix.setLookAtM
(
mVMatrix,
0,
cx,
cy,
cz,
tx,
ty,
tz,
upx,
upy,
upz
);
cameraLocation[0]=cx;
cameraLocation[1]=cy;
cameraLocation[2]=cz;
llbb.clear();
llbb.order(ByteOrder.nativeOrder());//设置字节顺序
cameraFB=llbb.asFloatBuffer();
cameraFB.put(cameraLocation);
cameraFB.position(0);
}
//获取摄像机矩阵的逆矩阵的方法
public static float[] getInvertMvMatrix(){
float[] invM = new float[16];
Matrix.invertM(invM, 0, mVMatrix, 0);//求逆矩阵
return invM;
}
//通过摄像机变换后的点求变换前的点的方法:乘以摄像机矩阵的逆矩阵
public static float[] fromPtoPreP(float[] p){
//通过逆变换,得到变换之前的点
float[] inverM = getInvertMvMatrix();//获取逆变换矩阵
float[] preP = new float[4];
Matrix.multiplyMV(preP, 0, inverM, 0, new float[]{p[0],p[1],p[2],1}, 0);//求变换前的点
return new float[]{preP[0],preP[1],preP[2]};//变换前的点就是变换之前的法向量
}
//设置透视投影参数
public static void setProjectFrustum
(
float left, //near面的left
float right, //near面的right
float bottom, //near面的bottom
float top, //near面的top
float near, //near面距离
float far //far面距离
)
{
Matrix.frustumM(mProjMatrix, 0, left, right, bottom, top, near, far);
}
//设置正交投影参数
public static void setProjectOrtho
(
float left, //near面的left
float right, //near面的right
float bottom, //near面的bottom
float top, //near面的top
float near, //near面距离
float far //far面距离
)
{
Matrix.orthoM(mProjMatrix, 0, left, right, bottom, top, near, far);
}
//用于一帧内的摄像机矩阵
private static float[] mVMatrixForSpecFrame = new float[16];//摄像机位置朝向9参数矩阵
public static void copyMVMatrix()
{
for(int i=0;i<16;i++)
{
mVMatrixForSpecFrame[i]=mVMatrix[i];
}
}
//获取具体物体的总变换矩阵
static float[] mMVPMatrix=new float[16];
public static float[] getFinalMatrix()
{
Matrix.multiplyMM(mMVPMatrix, 0, mVMatrixForSpecFrame, 0, currMatrix, 0);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
return mMVPMatrix;
}
//获取具体物体的变换矩阵
public static float[] getMMatrix()
{
return currMatrix;
}
//设置灯光位置的方法
static ByteBuffer llbbL = ByteBuffer.allocateDirect(3*4);
public static void setLightLocation(float x,float y,float z)
{
llbbL.clear();
lightLocation[0]=x;
lightLocation[1]=y;
lightLocation[2]=z;
llbbL.order(ByteOrder.nativeOrder());//设置字节顺序
lightPositionFB=llbbL.asFloatBuffer();
lightPositionFB.put(lightLocation);
lightPositionFB.position(0);
}
}

View File

@@ -0,0 +1,482 @@
package com.bn.Sample17_7;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.GLUtils;
import android.view.MotionEvent;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import javax.vecmath.Vector3f;
import com.bn.Sample17_7.R;
import com.bulletphysics.collision.broadphase.AxisSweep3;
import com.bulletphysics.collision.dispatch.CollisionConfiguration;
import com.bulletphysics.collision.dispatch.CollisionDispatcher;
import com.bulletphysics.collision.dispatch.DefaultCollisionConfiguration;
import com.bulletphysics.dynamics.DiscreteDynamicsWorld;
import com.bulletphysics.dynamics.constraintsolver.SequentialImpulseConstraintSolver;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.bulletphysics.collision.shapes.CollisionShape;
import com.bulletphysics.collision.shapes.SphereShape;
import com.bulletphysics.collision.shapes.StaticPlaneShape;
import static com.bn.Sample17_7.Constant.*;
class MySurfaceView extends GLSurfaceView
{
private SceneRenderer mRenderer;//场景渲染器
//=============拾取============
//光源距离Y轴的距离
final float LIGHT_Y=70;
float mPreviousX;//上次的触控位置X坐标
float mPreviousY;
float preNanoTime;
//是否移动的标志位
boolean isMoveFlag=false;
float cx=0; //摄像机位置x
float cy=1;
float cz=6; //摄像机位置z
float tx=0; //摄像机目标点x
float tz=-10; //摄像机目标点z
//摄像机转动的角度
double tempRadians=0;
//存储抬起手后摄像机转动的角度
double upRadians=0;
float left;
float right;
float top;
float bottom;
float near;
float far;
ArrayList<LoadedObjectVertexNormal> lovnList=new ArrayList<LoadedObjectVertexNormal>();
//被选中物体的索引值即id没有被选中时索引值为-1
int checkedIndex=-1;
float xOffset=0;//在轴上移动的位置
float yOffset=0;
float zOffset=0;
//===========分屏==========
static enum Area{LU,RU,LD,RD,NONE};
Area currArea=Area.NONE;
boolean areaTouch=false;
AreaTouchThread areaTouchThread;
//========摄像机========
Vector3f cameraCircleCenter=new Vector3f(0,0,0);
boolean forward=false;
//===============物理模拟====================
DiscreteDynamicsWorld dynamicsWorld;//世界对象
CollisionShape ballShape;//共用的立方体
CollisionShape planeShape;//共用的平面形状
Sample17_7_Activity activity;
LoadedObjectVertexNormal[] loadedModels=new LoadedObjectVertexNormal[7];
LoadedObjectVertexNormal[] bodyForDraws=new LoadedObjectVertexNormal[BodyPartIndex.BODYPART_COUNT.ordinal()];
public MySurfaceView(Context context)
{
super(context);
this.activity=(Sample17_7_Activity) context;
this.setEGLContextClientVersion(2);
//初始化物理世界
initWorld();
mRenderer = new SceneRenderer(); //创建场景渲染器
setRenderer(mRenderer); //设置渲染器
setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);//设置渲染模式为主动渲染
}
//初始化物理世界的方法
public void initWorld()
{
//创建碰撞检测配置信息对象
CollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
//创建碰撞检测算法分配者对象,其功能为扫描所有的碰撞检测对,并确定适用的检测策略对应的算法
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);
//设置整个物理世界的边界信息
Vector3f worldAabbMin = new Vector3f(-10000, -10000, -10000);
Vector3f worldAabbMax = new Vector3f(10000, 10000, 10000);
int maxProxies = 1024;
//创建碰撞检测粗测阶段的加速算法对象
AxisSweep3 overlappingPairCache =new AxisSweep3(worldAabbMin, worldAabbMax, maxProxies);
//创建推动约束解决者对象
SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver();
//创建物理世界对象
dynamicsWorld = new DiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver,collisionConfiguration);
//设置重力加速度
dynamicsWorld.setGravity(new Vector3f(0, -30, 0));
//创建共用的立方体
ballShape=new SphereShape(1);
//创建共用的平面形状
planeShape=new StaticPlaneShape(new Vector3f(0, 1, 0), 0);
}
public void loadCapsules(){//加载胶囊
loadedModels[0] = LoadUtil.loadFromFile("head.obj", activity.getResources(), MySurfaceView.this);//头
loadedModels[1] = LoadUtil.loadFromFile("spine.obj", activity.getResources(), MySurfaceView.this);//脊椎
loadedModels[2] = LoadUtil.loadFromFile("pelvis.obj", activity.getResources(), MySurfaceView.this);//骨盆
loadedModels[3] = LoadUtil.loadFromFile("upper_arm.obj", activity.getResources(), MySurfaceView.this);//大臂
loadedModels[4] = LoadUtil.loadFromFile("lower_arm.obj", activity.getResources(), MySurfaceView.this);//小臂
loadedModels[5] = LoadUtil.loadFromFile("upper_leg.obj", activity.getResources(), MySurfaceView.this);//大腿
loadedModels[6] = LoadUtil.loadFromFile("lower_leg.obj", activity.getResources(), MySurfaceView.this);//小腿
}
public void initBodyForDraws(){
bodyForDraws[BodyPartIndex.BODYPART_HEAD.ordinal()]=loadedModels[0];
bodyForDraws[BodyPartIndex.BODYPART_SPINE.ordinal()]=loadedModels[1];
bodyForDraws[BodyPartIndex.BODYPART_PELVIS.ordinal()]=loadedModels[2];
bodyForDraws[BodyPartIndex.BODYPART_RIGHT_UPPER_ARM.ordinal()]=loadedModels[3];
bodyForDraws[BodyPartIndex.BODYPART_LEFT_UPPER_ARM.ordinal()]=loadedModels[3].clone();
bodyForDraws[BodyPartIndex.BODYPART_LEFT_LOWER_ARM.ordinal()]=loadedModels[4];
bodyForDraws[BodyPartIndex.BODYPART_RIGHT_LOWER_ARM.ordinal()]=loadedModels[4].clone();
bodyForDraws[BodyPartIndex.BODYPART_RIGHT_UPPER_LEG.ordinal()]=loadedModels[5];
bodyForDraws[BodyPartIndex.BODYPART_LEFT_UPPER_LEG.ordinal()]=loadedModels[5].clone();
bodyForDraws[BodyPartIndex.BODYPART_RIGHT_LOWER_LEG.ordinal()]=loadedModels[6];
bodyForDraws[BodyPartIndex.BODYPART_LEFT_LOWER_LEG.ordinal()]=loadedModels[6].clone();
for(int i=0;i<bodyForDraws.length;i++){
lovnList.add(bodyForDraws[i]);
}
}
float x;
float y;
@Override
public boolean onTouchEvent(MotionEvent event)
{
x=event.getX();
y=event.getY();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
mPreviousX=event.getX();
mPreviousY=event.getY();
preNanoTime=System.nanoTime();
checkedIndex=-1;
//计算旋转后点的变化
float[] AB=IntersectantUtil.calculateABPosition
(
x, //触控点X坐标
y, //触控点Y坐标
Sample17_7_Activity.screenWidth, //屏幕宽度
Sample17_7_Activity.screenHeight, //屏幕长度
left, //视角left、top值
top,
near, //视角near、far值
far
);
//射线AB
MyVector3f start = new MyVector3f(AB[0], AB[1], AB[2]);//起点
MyVector3f end = new MyVector3f(AB[3], AB[4], AB[5]);//终点
MyVector3f dir = end.minus(start);//长度和方向
/*
* 计算AB线段与每个物体包围盒的最佳交点(与A点最近的交点)
* 并记录有最佳交点的物体在列表中的索引值
*/
//记录列表中时间最小的索引值
int tmpIndex=-1;//记录与A点最近物体索引的临时值
float minTime=1;//记录列表中所有物体与AB相交的最短时间
for(int i=0;i<lovnList.size();i++){//遍历列表中的物体
AABB3 box = lovnList.get(i).getCurrBox(); //获得物体AABB包围盒
float t = box.rayIntersect(start, dir, null);//计算相交时间
if (t <= minTime) {
minTime = t;//记录最小值
tmpIndex = i;//记录最小值索引
}
}
checkedIndex=tmpIndex;//将索引保存在checkedIndex中
changeObj(checkedIndex);//改变被选中物体
break;
case MotionEvent.ACTION_MOVE:
if(x-mPreviousX>=10.0f||x-mPreviousX<=-10.0f)
{//移动大于相应的值,则认为其真正的移动
isMoveFlag=true;
}
if(isMoveFlag)
{
if(checkedIndex!=-1){
LoadedObjectVertexNormal lovo = lovnList.get(checkedIndex);
lovo.isPicked=true;
float[] nearXY=IntersectantUtil.calculateABPosition(
x,y,
Sample17_7_Activity.screenWidth,Sample17_7_Activity.screenHeight,
left,top,
near,far
);
float[] nearPreXY = IntersectantUtil.calculateABPosition(
mPreviousX,mPreviousY,
Sample17_7_Activity.screenWidth,Sample17_7_Activity.screenHeight,
left,top,
near,far
);
Vector3f currPivot = lovo.p2p.getPivotInB(new Vector3f());
Vector3f dir1 = new Vector3f(nearXY[0]-nearPreXY[0],nearXY[1]-nearPreXY[1],nearXY[2]-nearPreXY[2]);
float vFactor = 0.5f;
dir1.set(dir1.x*vFactor,dir1.y*vFactor,dir1.z*vFactor);
currPivot.add(dir1);
lovo.p2p.setPivotB(currPivot);
}
}
break;
case MotionEvent.ACTION_UP:
isMoveFlag=false;
if(checkedIndex!=-1){
LoadedObjectVertexNormal lovo = lovnList.get(checkedIndex);
lovo.removePickedConstraint();
checkedIndex=-1;
}
if(checkedIndex==-1 && currArea!=Area.NONE){
currArea=Area.NONE;
areaTouch=false;
upRadians=tempRadians;
}
break;
}
return true;
}
//改变列表中下标为index的物体
public void changeObj(int index){
if(index != -1){//如果有物体被选中
LoadedObjectVertexNormal lovo = lovnList.get(index);
lovo.body.activate();
lovo.addPickedConstraint();
}
else{
//表示没有拾取到
if(0<x && x<Sample17_7_Activity.screenWidth/2 && 0<y && y<Sample17_7_Activity.screenHeight/2){
currArea = Area.LU;
}else if(Sample17_7_Activity.screenWidth/2<x && 0<y && y<Sample17_7_Activity.screenHeight/2){
currArea = Area.RU;
}else if(0<x && x<Sample17_7_Activity.screenWidth/2 && y>Sample17_7_Activity.screenHeight/2){
currArea = Area.LD;
}else if(x>Sample17_7_Activity.screenWidth/2 && y>Sample17_7_Activity.screenHeight/2){
currArea = Area.RD;
}
areaTouch=true;
if(areaTouchThread==null || !areaTouchThread.isAlive()){
areaTouchThread = new AreaTouchThread();
areaTouchThread.start();
}
}
}
private class SceneRenderer implements GLSurfaceView.Renderer
{
int floorTextureId;//地面纹理
TexFloor floor;//纹理矩形1
Doll doll;
public void onDrawFrame(GL10 gl) {
//清除深度缓冲与颜色缓冲
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
//初始化光源位置
MatrixState.setLightLocation((float)(LIGHT_Y*Math.sin(tempRadians)), 30, (float)(LIGHT_Y*Math.cos(tempRadians)));
//初始化变换矩阵
cx=(float) (25*Math.sin(tempRadians)+cameraCircleCenter.x);
cz=(float) (25*Math.cos(tempRadians)+cameraCircleCenter.z);
tx=(float) (10*Math.sin(tempRadians)+cameraCircleCenter.x);
tz=(float) (10*Math.cos(tempRadians)+cameraCircleCenter.z);
MatrixState.setCamera(cx,cy,cz,tx,0f,tz,0f,1.0f,0.0f);
MatrixState.pushMatrix();
MatrixState.copyMVMatrix();
doll.drawSelf(checkedIndex);
//绘制地板
MatrixState.pushMatrix();
floor.drawSelf( floorTextureId);
MatrixState.popMatrix();
MatrixState.popMatrix();
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
//设置视窗大小及位置
GLES20.glViewport(0, 0, width, height);
//计算透视投影的比例
float ratio = (float) width / height;
left=right=ratio;
top=bottom=1;
near=2;
far=100;
MatrixState.setProjectFrustum(-left, right, -bottom, top, near, far);
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//设置屏幕背景色黑色RGBA
GLES20.glClearColor(0,0,0,0);
//启用深度测试
GLES20.glEnable(GL10.GL_DEPTH_TEST);
//设置为打开背面剪裁
GLES20.glEnable(GL10.GL_CULL_FACE);
MatrixState.setInitStack();
ShaderManager.loadCodeFromFile(activity.getResources());
ShaderManager.compileShader();
loadCapsules();
initBodyForDraws();
//初始化纹理
floorTextureId=initTextureRepeat(R.drawable.f6);
doll = new Doll(MySurfaceView.this,dynamicsWorld,bodyForDraws);
//创建地面矩形
floor=new TexFloor(ShaderManager.getTextureShaderProgram(),80*Constant.UNIT_SIZE,-Constant.UNIT_SIZE,planeShape,dynamicsWorld);
new Thread()
{
public void run()
{
while(true)
{
try
{
//开始模拟
dynamicsWorld.stepSimulation(TIME_STEP, MAX_SUB_STEPS);
Thread.sleep(20); //当前线程睡眠20毫秒
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}.start(); //启动线程
}
}
public int initTexture(int drawableId){//textureId
//生成纹理ID
int[] textures = new int[1];
GLES20.glGenTextures
(
1, //产生的纹理id的数量
textures, //纹理id的数组
0 //偏移量
);
int textureId=textures[0];
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_NEAREST);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
//通过输入流加载图片===============begin===================
InputStream is = this.getResources().openRawResource(drawableId);
Bitmap bitmapTmp;
try
{
bitmapTmp = BitmapFactory.decodeStream(is);
}
finally
{
try
{
is.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
//通过输入流加载图片===============end=====================
//实际加载纹理
GLUtils.texImage2D
(
GLES20.GL_TEXTURE_2D, //纹理类型在OpenGL ES中必须为GL10.GL_TEXTURE_2D
0, //纹理的层次0表示基本图像层可以理解为直接贴图
bitmapTmp, //纹理图像
0 //纹理边框尺寸
);
bitmapTmp.recycle(); //纹理加载成功后释放图片
return textureId;
}
public int initTextureRepeat(int drawableId)//textureId
{
//生成纹理ID
int[] textures = new int[1];
GLES20.glGenTextures
(
1, //产生的纹理id的数量
textures, //纹理id的数组
0 //偏移量
);
int textureId=textures[0];
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_NEAREST);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_REPEAT);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_REPEAT);
//通过输入流加载图片===============begin===================
InputStream is = this.getResources().openRawResource(drawableId);
Bitmap bitmapTmp;
try
{
bitmapTmp = BitmapFactory.decodeStream(is);
}
finally
{
try
{
is.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
//通过输入流加载图片===============end=====================
//实际加载纹理
GLUtils.texImage2D
(
GLES20.GL_TEXTURE_2D, //纹理类型在OpenGL ES中必须为GL20.GL_TEXTURE_2D
0, //纹理的层次0表示基本图像层可以理解为直接贴图
bitmapTmp, //纹理图像
0 //纹理边框尺寸
);
bitmapTmp.recycle(); //纹理加载成功后释放图片
return textureId;
}
class AreaTouchThread extends Thread{
float time=0;
float linearV=0.1f;
float angularV=2;
public void run(){
while(areaTouch){
System.out.println("run");
System.out.println(currArea.ordinal());
time++;
if(currArea==Area.LU){//左转
tempRadians=upRadians-Math.toRadians(time*angularV);
}
if(currArea==Area.RU){//右转
tempRadians=upRadians+Math.toRadians(time*angularV);
}
if(currArea==Area.LD){//前进
float moveLength=time*linearV;
cameraCircleCenter.x=(float) (cameraCircleCenter.x-moveLength*Math.sin(tempRadians));
cameraCircleCenter.z=(float) (cameraCircleCenter.z-moveLength*Math.cos(tempRadians));
}
if(currArea==Area.RD){//后退
float moveLength=time*linearV;
cameraCircleCenter.x=(float) (cameraCircleCenter.x+moveLength*Math.sin(tempRadians));
cameraCircleCenter.z=(float) (cameraCircleCenter.z+moveLength*Math.cos(tempRadians));
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}

View File

@@ -0,0 +1,46 @@
package com.bn.Sample17_7;
//用于存储点或向量的类
public class MyVector3f
{
float x;
float y;
float z;
public MyVector3f(){}
public MyVector3f(float x,float y,float z)
{
this.x=x;
this.y=y;
this.z=z;
}
public MyVector3f(float[] v)
{
this.x=v[0];
this.y=v[1];
this.z=v[2];
}
//加法
public MyVector3f add(MyVector3f v){
return new MyVector3f(this.x+v.x,this.y+v.y,this.z+v.z);
}
//减法
public MyVector3f minus(MyVector3f v){
return new MyVector3f(this.x-v.x,this.y-v.y,this.z-v.z);
}
//与常量相乘
public MyVector3f multiK(float k){
return new MyVector3f(this.x*k,this.y*k,this.z*k);
}
//规格化
public void normalize(){
float mod=module();
x /= mod;
y /= mod;
z /= mod;
}
//模
public float module(){
return (float) Math.sqrt(x*x+y*y+z*z);
}
}

View File

@@ -0,0 +1,66 @@
package com.bn.Sample17_7;
import java.util.Set;
//表示法向量的类,此类的一个对象表示一个法向量
public class Normal
{
public static final float DIFF=0.0000001f;//判断两个法向量是否相同的阈值
//法向量在XYZ轴上的分量
float nx;
float ny;
float nz;
public Normal(float nx,float ny,float nz)
{
this.nx=nx;
this.ny=ny;
this.nz=nz;
}
@Override
public boolean equals(Object o)
{
if(o instanceof Normal)
{//若两个法向量XYZ三个分量的差都小于指定的阈值则认为这两个法向量相等
Normal tn=(Normal)o;
if(Math.abs(nx-tn.nx)<DIFF&&
Math.abs(ny-tn.ny)<DIFF&&
Math.abs(ny-tn.ny)<DIFF
)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
//由于要用到HashSet因此一定要重写hashCode方法
@Override
public int hashCode()
{
return 1;
}
//求法向量平均值的工具方法
public static float[] getAverage(Set<Normal> sn)
{
//存放法向量和的数组
float[] result=new float[3];
//把集合中所有的法向量求和
for(Normal n:sn)
{
result[0]+=n.nx;
result[1]+=n.ny;
result[2]+=n.nz;
}
//将求和后的法向量规格化
return LoadUtil.vectorNormal(result);
}
}

View File

@@ -0,0 +1,17 @@
package com.bn.Sample17_7;
import javax.vecmath.Quat4f;
public class SYSUtil
{
//将四元数转换为角度及转轴向量
public static float[] fromSYStoAXYZ(Quat4f q4)
{
double sitaHalf=Math.acos(q4.w);
float nx=(float) (q4.x/Math.sin(sitaHalf));
float ny=(float) (q4.y/Math.sin(sitaHalf));
float nz=(float) (q4.z/Math.sin(sitaHalf));
return new float[]{(float) Math.toDegrees(sitaHalf*2),nx,ny,nz};
}
}

View File

@@ -0,0 +1,59 @@
package com.bn.Sample17_7;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
public class Sample17_7_Activity extends Activity {
private MySurfaceView mGLSurfaceView;
static float screenWidth;//屏幕宽度
static float screenHeight;//屏幕高度
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉标头
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制横屏
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth=dm.widthPixels; //dm.widthPixels 获取屏幕横向分辨率
screenHeight=dm.heightPixels; //dm.heightPixels 获取屏幕竖向分辨率
mGLSurfaceView = new MySurfaceView(this);
mGLSurfaceView.requestFocus();//获取焦点
mGLSurfaceView.setFocusableInTouchMode(true);//设置为可触控
setContentView(mGLSurfaceView);
}
@Override
protected void onResume() {
super.onResume();
mGLSurfaceView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mGLSurfaceView.onPause();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent e)
{
if(keyCode==4)
{
System.exit(0);
}
return false;
}
}

View File

@@ -0,0 +1,41 @@
package com.bn.Sample17_7;
import android.content.res.Resources;
public class ShaderManager
{
final static int shaderCount=1;
final static String[][] shaderName=
{
{"vertex.sh","frag.sh"}
};
static String[]mVertexShader=new String[shaderCount];
static String[]mFragmentShader=new String[shaderCount];
static int[] program=new int[shaderCount];
public static void loadCodeFromFile(Resources r)
{
for(int i=0;i<shaderCount;i++)
{
//加载顶点着色器的脚本内容
mVertexShader[i]=ShaderUtil.loadFromAssetsFile(shaderName[i][0],r);
//加载片元着色器的脚本内容
mFragmentShader[i]=ShaderUtil.loadFromAssetsFile(shaderName[i][1], r);
}
}
//编译3D物体的shader
public static void compileShader()
{
for(int i=0;i<shaderCount;i++)
{
program[i]=ShaderUtil.createProgram(mVertexShader[i], mFragmentShader[i]);
}
}
//这里返回的是纹理的shader程序
public static int getTextureShaderProgram()
{
return program[0];
}
}

View File

@@ -0,0 +1,121 @@
package com.bn.Sample17_7;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import android.content.res.Resources;
import android.opengl.GLES20;
import android.util.Log;
//加载顶点Shader与片元Shader的工具类
public class ShaderUtil
{
//加载制定shader的方法
public static int loadShader
(
int shaderType, //shader的类型 GLES20.GL_VERTEX_SHADER GLES20.GL_FRAGMENT_SHADER
String source //shader的脚本字符串
)
{
//创建一个新shader
int shader = GLES20.glCreateShader(shaderType);
//若创建成功则加载shader
if (shader != 0)
{
//加载shader的源代码
GLES20.glShaderSource(shader, source);
//编译shader
GLES20.glCompileShader(shader);
//存放编译成功shader数量的数组
int[] compiled = new int[1];
//获取Shader的编译情况
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
if (compiled[0] == 0)
{//若编译失败则显示错误日志并删除此shader
Log.e("ES20_ERROR", "Could not compile shader " + shaderType + ":");
Log.e("ES20_ERROR", GLES20.glGetShaderInfoLog(shader));
GLES20.glDeleteShader(shader);
shader = 0;
}
}
return shader;
}
//创建shader程序的方法
public static int createProgram(String vertexSource, String fragmentSource)
{
//加载顶点着色器
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
if (vertexShader == 0)
{
return 0;
}
//加载片元着色器
int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
if (pixelShader == 0)
{
return 0;
}
//创建程序
int program = GLES20.glCreateProgram();
//若程序创建成功则向程序中加入顶点着色器与片元着色器
if (program != 0)
{
//向程序中加入顶点着色器
GLES20.glAttachShader(program, vertexShader);
checkGlError("glAttachShader");
//向程序中加入片元着色器
GLES20.glAttachShader(program, pixelShader);
checkGlError("glAttachShader");
//链接程序
GLES20.glLinkProgram(program);
//存放链接成功program数量的数组
int[] linkStatus = new int[1];
//获取program的链接情况
GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
//若链接失败则报错并删除程序
if (linkStatus[0] != GLES20.GL_TRUE)
{
Log.e("ES20_ERROR", "Could not link program: ");
Log.e("ES20_ERROR", GLES20.glGetProgramInfoLog(program));
GLES20.glDeleteProgram(program);
program = 0;
}
}
return program;
}
//检查每一步操作是否有错误的方法
public static void checkGlError(String op)
{
int error;
while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR)
{
Log.e("ES20_ERROR", op + ": glError " + error);
throw new RuntimeException(op + ": glError " + error);
}
}
//从sh脚本中加载shader内容的方法
public static String loadFromAssetsFile(String fname,Resources r)
{
String result=null;
try
{
InputStream in=r.getAssets().open(fname);
int ch=0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((ch=in.read())!=-1)
{
baos.write(ch);
}
byte[] buff=baos.toByteArray();
baos.close();
in.close();
result=new String(buff,"UTF-8");
result=result.replaceAll("\\r\\n","\n");
}
catch(Exception e)
{
e.printStackTrace();
}
return result;
}
}

View File

@@ -0,0 +1,157 @@
package com.bn.Sample17_7;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import android.opengl.GLES20;
import com.bulletphysics.collision.shapes.*;
import com.bulletphysics.dynamics.DiscreteDynamicsWorld;
import com.bulletphysics.dynamics.RigidBody;
import com.bulletphysics.dynamics.RigidBodyConstructionInfo;
import com.bulletphysics.linearmath.DefaultMotionState;
import com.bulletphysics.linearmath.Transform;
import javax.vecmath.Vector3f;
public class TexFloor {
int mProgram;//自定义渲染管线程序id
int muMVPMatrixHandle;//总变换矩阵引用id
int muMMatrixHandle;//位置、旋转变换矩阵
int maTexCoorHandle; //顶点纹理坐标属性引用id
int uTexHandle;//外观纹理属性引用id
int maCameraHandle; //摄像机位置属性引用id
int maPositionHandle; //顶点位置属性引用id
String mVertexShader;//顶点着色器
String mFragmentShader;//片元着色器
private FloatBuffer mVertexBuffer;//顶点坐标数据缓冲
private FloatBuffer mTextureBuffer;//顶点着色数据缓冲
int vCount;
float yOffset;
public TexFloor(int mProgram,final float UNIT_SIZE, float yOffset,CollisionShape groundShape,DiscreteDynamicsWorld dynamicsWorld)
{
this.mProgram=mProgram;
this.yOffset=yOffset;
//创建刚体的初始变换对象
Transform groundTransform = new Transform();
groundTransform.setIdentity();
groundTransform.origin.set(new Vector3f(0.f, yOffset, 0.f));
Vector3f localInertia = new Vector3f(0, 0, 0);//惯性
//创建刚体的运动状态对象
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);
//创建刚体信息对象
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(0, myMotionState, groundShape, localInertia);
//创建刚体
RigidBody body = new RigidBody(rbInfo);
//设置反弹系数
body.setRestitution(0.4f);
//设置摩擦系数
body.setFriction(0.8f);
//将刚体添加进物理世界
dynamicsWorld.addRigidBody(body);
initVertexData(UNIT_SIZE);
intShader(mProgram);
}
public void initVertexData(final float UNIT_SIZE){
//顶点坐标数据的初始化================begin============================
vCount=6;
float vertices[]=new float[]
{
1*UNIT_SIZE,yOffset,1*UNIT_SIZE,
-1*UNIT_SIZE,yOffset,-1*UNIT_SIZE,
-1*UNIT_SIZE,yOffset,1*UNIT_SIZE,
1*UNIT_SIZE,yOffset,1*UNIT_SIZE,
1*UNIT_SIZE,yOffset,-1*UNIT_SIZE,
-1*UNIT_SIZE,yOffset,-1*UNIT_SIZE,
};
//创建顶点坐标数据缓冲
//vertices.length*4是因为一个整数四个字节
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4);
vbb.order(ByteOrder.nativeOrder());//设置字节顺序
mVertexBuffer = vbb.asFloatBuffer();//转换为int型缓冲
mVertexBuffer.put(vertices);//向缓冲区中放入顶点坐标数据
mVertexBuffer.position(0);//设置缓冲区起始位置
//特别提示由于不同平台字节顺序不同数据单元不是字节的一定要经过ByteBuffer
//转换关键是要通过ByteOrder设置nativeOrder(),否则有可能会出问题
//顶点坐标数据的初始化================end============================
//顶点纹理数据的初始化================begin============================
float textures[]=new float[]
{
UNIT_SIZE/2,UNIT_SIZE/2, 0,0, 0,UNIT_SIZE/2,
UNIT_SIZE/2,UNIT_SIZE/2, UNIT_SIZE/2,0, 0,0
};
//创建顶点纹理数据缓冲
ByteBuffer tbb = ByteBuffer.allocateDirect(textures.length*4);
tbb.order(ByteOrder.nativeOrder());//设置字节顺序
mTextureBuffer= tbb.asFloatBuffer();//转换为Float型缓冲
mTextureBuffer.put(textures);//向缓冲区中放入顶点着色数据
mTextureBuffer.position(0);//设置缓冲区起始位置
//特别提示由于不同平台字节顺序不同数据单元不是字节的一定要经过ByteBuffer
//转换关键是要通过ByteOrder设置nativeOrder(),否则有可能会出问题
//顶点纹理数据的初始化================end============================
}
//初始化shader
public void intShader(int mProgram)
{
//获取程序中顶点位置属性引用id
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
//获取程序中顶点经纬度属性引用id
maTexCoorHandle=GLES20.glGetAttribLocation(mProgram, "aTexCoor");
//获取程序中总变换矩阵引用id
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
//获取位置、旋转变换矩阵引用id
muMMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMMatrix");
//获取程序中摄像机位置引用id
maCameraHandle=GLES20.glGetUniformLocation(mProgram, "uCamera");
uTexHandle=GLES20.glGetUniformLocation(mProgram, "sTexture");
}
public void drawSelf(int texId)
{
//制定使用某套shader程序
GLES20.glUseProgram(mProgram);
//将最终变换矩阵传入shader程序
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, MatrixState.getFinalMatrix(), 0);
//将位置、旋转变换矩阵传入shader程序
GLES20.glUniformMatrix4fv(muMMatrixHandle, 1, false, MatrixState.getMMatrix(), 0);
//将摄像机位置传入shader程序
GLES20.glUniform3fv(maCameraHandle, 1, MatrixState.cameraFB);
//为画笔指定顶点位置数据
GLES20.glVertexAttribPointer
(
maPositionHandle,
3,
GLES20.GL_FLOAT,
false,
3*4,
mVertexBuffer
);
//为画笔指定顶点纹理坐标数据
GLES20.glVertexAttribPointer
(
maTexCoorHandle,
2,
GLES20.GL_FLOAT,
false,
2*4,
mTextureBuffer
);
//允许顶点位置数据数组
GLES20.glEnableVertexAttribArray(maPositionHandle);
GLES20.glEnableVertexAttribArray(maTexCoorHandle);
//绑定纹理
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texId);
GLES20.glUniform1i(uTexHandle, 0);
//绘制三角形
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vCount);
}
}