├── 978-1-4842-1501-2_Ch01_code.zip ├── 978-1-4842-1501-2_Ch02_code.zip ├── 978-1-4842-1501-2_Ch03_code.zip ├── 978-1-4842-1501-2_Ch04_code.zip ├── 978-1-4842-1501-2_Ch05_code.zip ├── 978-1-4842-1501-2_Ch06_code.zip ├── 978-1-4842-1501-2_Ch07_code.zip ├── 9781484215012.jpg ├── Chapter08 ├── +libs │ ├── gdx-backend-lwjgl-natives.jar │ ├── gdx-backend-lwjgl.jar │ ├── gdx-natives.jar │ └── gdx.jar ├── BaseActor3D.class ├── BaseActor3D.ctxt ├── BaseActor3D.java ├── BaseGame.class ├── BaseGame.java ├── BaseScreen.class ├── BaseScreen.ctxt ├── BaseScreen.java ├── DemoScreen.class ├── DemoScreen.ctxt ├── DemoScreen.java ├── GameScreen.class ├── GameScreen.ctxt ├── GameScreen.java ├── Launcher1.class ├── Launcher1.java ├── Launcher2.class ├── Launcher2.ctxt ├── Launcher2.java ├── Launcher3.class ├── Launcher3.ctxt ├── Launcher3.java ├── ModelUtils.class ├── ModelUtils.ctxt ├── ModelUtils.java ├── README.TXT ├── Stage3D.class ├── Stage3D.ctxt ├── Stage3D.java ├── TheDemo.class ├── TheDemo.ctxt ├── TheDemo.java ├── TheGame.class ├── TheGame.ctxt ├── TheGame.java ├── TheTest.class ├── TheTest.java ├── assets │ ├── crate.jpg │ ├── rock.jpg │ ├── rock.mtl │ ├── rock.obj │ ├── ship.mtl │ ├── ship.obj │ ├── ship_diffuse.png │ ├── sky-sphere.png │ ├── starfish-collector.png │ ├── water.jpg │ ├── xneg.png │ ├── xpos.png │ ├── yneg.png │ ├── ypos.png │ ├── zneg.png │ └── zpos.png └── package.bluej ├── LICENSE.txt ├── README.md └── contributing.md /978-1-4842-1501-2_Ch01_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch01_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch02_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch02_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch03_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch03_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch04_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch04_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch05_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch05_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch06_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch06_code.zip -------------------------------------------------------------------------------- /978-1-4842-1501-2_Ch07_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/978-1-4842-1501-2_Ch07_code.zip -------------------------------------------------------------------------------- /9781484215012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/9781484215012.jpg -------------------------------------------------------------------------------- /Chapter08/+libs/gdx-backend-lwjgl-natives.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/+libs/gdx-backend-lwjgl-natives.jar -------------------------------------------------------------------------------- /Chapter08/+libs/gdx-backend-lwjgl.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/+libs/gdx-backend-lwjgl.jar -------------------------------------------------------------------------------- /Chapter08/+libs/gdx-natives.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/+libs/gdx-natives.jar -------------------------------------------------------------------------------- /Chapter08/+libs/gdx.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/+libs/gdx.jar -------------------------------------------------------------------------------- /Chapter08/BaseActor3D.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/BaseActor3D.class -------------------------------------------------------------------------------- /Chapter08/BaseActor3D.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=BaseActor3D() 4 | comment1.params=m 5 | comment1.target=void\ setModelInstance(com.badlogic.gdx.graphics.g3d.ModelInstance) 6 | comment10.params=x\ y\ z 7 | comment10.target=void\ addPosition(float,\ float,\ float) 8 | comment11.params=dist 9 | comment11.target=void\ moveForward(float) 10 | comment12.params=dist 11 | comment12.target=void\ moveUp(float) 12 | comment13.params=dist 13 | comment13.target=void\ moveRight(float) 14 | comment14.params= 15 | comment14.target=float\ getTurnAngle() 16 | comment15.params=degrees 17 | comment15.target=void\ setTurnAngle(float) 18 | comment16.params=degrees 19 | comment16.target=void\ turn(float) 20 | comment17.params= 21 | comment17.target=void\ setRectangleBase() 22 | comment18.params= 23 | comment18.target=void\ setEllipseBase() 24 | comment19.params= 25 | comment19.target=com.badlogic.gdx.math.Polygon\ getBoundingPolygon() 26 | comment2.params= 27 | comment2.target=com.badlogic.gdx.math.Matrix4\ calculateTransform() 28 | comment20.params=other\ resolve 29 | comment20.target=boolean\ overlaps(BaseActor3D,\ boolean) 30 | comment21.params= 31 | comment21.target=BaseActor3D\ clone() 32 | comment22.params=orig 33 | comment22.target=void\ copy(BaseActor3D) 34 | comment3.params=dt 35 | comment3.target=void\ act(float) 36 | comment4.params=batch\ env 37 | comment4.target=void\ draw(com.badlogic.gdx.graphics.g3d.ModelBatch,\ com.badlogic.gdx.graphics.g3d.Environment) 38 | comment5.params=c 39 | comment5.target=void\ setColor(com.badlogic.gdx.graphics.Color) 40 | comment6.params= 41 | comment6.target=com.badlogic.gdx.math.Vector3\ getPosition() 42 | comment7.params=v 43 | comment7.target=void\ setPosition(com.badlogic.gdx.math.Vector3) 44 | comment8.params=x\ y\ z 45 | comment8.target=void\ setPosition(float,\ float,\ float) 46 | comment9.params=v 47 | comment9.target=void\ addPosition(com.badlogic.gdx.math.Vector3) 48 | numComments=23 49 | -------------------------------------------------------------------------------- /Chapter08/BaseActor3D.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.graphics.g3d.Environment; 2 | import com.badlogic.gdx.graphics.g3d.ModelBatch; 3 | import com.badlogic.gdx.graphics.g3d.ModelInstance; 4 | import com.badlogic.gdx.graphics.g3d.Material; 5 | import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; 6 | import com.badlogic.gdx.graphics.Color; 7 | import com.badlogic.gdx.math.Vector3; 8 | import com.badlogic.gdx.math.Quaternion; 9 | import com.badlogic.gdx.math.Matrix4; 10 | import com.badlogic.gdx.math.collision.BoundingBox; 11 | import com.badlogic.gdx.math.Polygon; 12 | import com.badlogic.gdx.math.Intersector; 13 | import com.badlogic.gdx.math.Intersector.MinimumTranslationVector; 14 | 15 | public class BaseActor3D 16 | { 17 | private ModelInstance modelData; 18 | private final Vector3 position; 19 | private final Quaternion rotation; 20 | private final Vector3 scale; 21 | private Polygon boundingPolygon; 22 | 23 | public BaseActor3D() 24 | { 25 | modelData = null; 26 | position = new Vector3(0,0,0); 27 | rotation = new Quaternion(); 28 | scale = new Vector3(1,1,1); 29 | boundingPolygon = null; 30 | } 31 | 32 | public void setModelInstance(ModelInstance m) 33 | { modelData = m; } 34 | 35 | public Matrix4 calculateTransform() 36 | { return new Matrix4(position, rotation, scale); } 37 | 38 | public void act(float dt) 39 | { modelData.transform.set( calculateTransform() ); } 40 | 41 | public void draw(ModelBatch batch, Environment env) 42 | { batch.render(modelData, env); } 43 | 44 | public void setColor(Color c) 45 | { 46 | for (Material m : modelData.materials) 47 | m.set( ColorAttribute.createDiffuse(c) ); 48 | } 49 | 50 | public Vector3 getPosition() 51 | { return position; } 52 | 53 | public void setPosition(Vector3 v) 54 | { position.set(v); } 55 | public void setPosition(float x, float y, float z) 56 | { position.set(x,y,z); } 57 | 58 | public void addPosition(Vector3 v) 59 | { position.add(v); } 60 | public void addPosition(float x, float y, float z) 61 | { addPosition( new Vector3(x,y,z) ); } 62 | 63 | public void moveForward(float dist) 64 | { addPosition( rotation.transform( new Vector3(0,0,-1) ).scl( dist ) ); } 65 | public void moveUp(float dist) 66 | { addPosition( rotation.transform( new Vector3(0,1,0) ).scl( dist ) ); } 67 | public void moveRight(float dist) 68 | { addPosition( rotation.transform( new Vector3(1,0,0) ).scl( dist ) ); } 69 | 70 | public float getTurnAngle() 71 | { return rotation.getAngleAround(0,-1,0); } 72 | public void setTurnAngle(float degrees) 73 | { rotation.set( new Quaternion(Vector3.Y,degrees) ); } 74 | public void turn(float degrees) 75 | { rotation.mul( new Quaternion(Vector3.Y,-degrees) ); } 76 | 77 | // 2D collision detection 78 | public void setRectangleBase() 79 | { 80 | BoundingBox modelBounds = modelData.calculateBoundingBox( new BoundingBox() ); 81 | Vector3 max = modelBounds.max; 82 | Vector3 min = modelBounds.min; 83 | 84 | float[] vertices = 85 | {max.x, max.z, min.x, max.z, min.x, min.z, max.x, min.z}; 86 | boundingPolygon = new Polygon(vertices); 87 | boundingPolygon.setOrigin(0,0); 88 | } 89 | 90 | public void setEllipseBase() 91 | { 92 | BoundingBox modelBounds = modelData.calculateBoundingBox( new BoundingBox() ); 93 | Vector3 max = modelBounds.max; 94 | Vector3 min = modelBounds.min; 95 | 96 | float a = 0.75f; // offset amount. 97 | float[] vertices = 98 | {max.x,0, a*max.x,a*max.z, 0,max.z, a*min.x,a*max.z, 99 | min.x,0, a*min.x,a*min.z, 0,min.z, a*max.x,a*min.z }; 100 | boundingPolygon = new Polygon(vertices); 101 | boundingPolygon.setOrigin(0,0); 102 | } 103 | 104 | public Polygon getBoundingPolygon() 105 | { 106 | boundingPolygon.setPosition( position.x, position.z ); 107 | boundingPolygon.setRotation( getTurnAngle() ); 108 | return boundingPolygon; 109 | } 110 | 111 | public boolean overlaps(BaseActor3D other, boolean resolve) 112 | { 113 | Polygon poly1 = this.getBoundingPolygon(); 114 | Polygon poly2 = other.getBoundingPolygon(); 115 | 116 | if ( !poly1.getBoundingRectangle().overlaps(poly2.getBoundingRectangle()) ) 117 | return false; 118 | 119 | MinimumTranslationVector mtv = new MinimumTranslationVector(); 120 | boolean polyOverlap = Intersector.overlapConvexPolygons(poly1, poly2, mtv); 121 | if (polyOverlap && resolve) 122 | { 123 | this.addPosition( mtv.normal.x * mtv.depth, 0, mtv.normal.y * mtv.depth ); 124 | } 125 | float significant = 0.5f; 126 | return (polyOverlap && (mtv.depth > significant)); 127 | } 128 | 129 | public BaseActor3D clone() 130 | { 131 | BaseActor3D newbie = new BaseActor3D(); 132 | newbie.copy(this); 133 | return newbie; 134 | } 135 | 136 | public void copy(BaseActor3D orig) 137 | { 138 | this.modelData = new ModelInstance(orig.modelData); 139 | this.position.set( orig.position ); 140 | this.rotation.set( orig.rotation ); 141 | this.scale.set( orig.scale ); 142 | if (orig.boundingPolygon != null) 143 | this.boundingPolygon = new Polygon(orig.boundingPolygon.getVertices()); 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /Chapter08/BaseGame.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/BaseGame.class -------------------------------------------------------------------------------- /Chapter08/BaseGame.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.Game; 2 | import com.badlogic.gdx.scenes.scene2d.ui.Skin; 3 | 4 | public abstract class BaseGame extends Game 5 | { 6 | // used to store resources common to multiple screens 7 | Skin skin; 8 | 9 | public BaseGame() 10 | { 11 | skin = new Skin(); 12 | } 13 | 14 | public abstract void create(); 15 | 16 | public void dispose() 17 | { 18 | skin.dispose(); 19 | } 20 | } -------------------------------------------------------------------------------- /Chapter08/BaseScreen.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/BaseScreen.class -------------------------------------------------------------------------------- /Chapter08/BaseScreen.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params=g 3 | comment0.target=BaseScreen(BaseGame) 4 | comment1.params= 5 | comment1.target=void\ create() 6 | comment10.params= 7 | comment10.target=void\ dispose() 8 | comment11.params= 9 | comment11.target=void\ show() 10 | comment12.params= 11 | comment12.target=void\ hide() 12 | comment13.params=keycode 13 | comment13.target=boolean\ keyDown(int) 14 | comment14.params=keycode 15 | comment14.target=boolean\ keyUp(int) 16 | comment15.params=c 17 | comment15.target=boolean\ keyTyped(char) 18 | comment16.params=screenX\ screenY 19 | comment16.target=boolean\ mouseMoved(int,\ int) 20 | comment17.params=amount 21 | comment17.target=boolean\ scrolled(int) 22 | comment18.params=screenX\ screenY\ pointer\ button 23 | comment18.target=boolean\ touchDown(int,\ int,\ int,\ int) 24 | comment19.params=screenX\ screenY\ pointer 25 | comment19.target=boolean\ touchDragged(int,\ int,\ int) 26 | comment2.params=dt 27 | comment2.target=void\ update(float) 28 | comment20.params=screenX\ screenY\ pointer\ button 29 | comment20.target=boolean\ touchUp(int,\ int,\ int,\ int) 30 | comment3.params=dt 31 | comment3.target=void\ render(float) 32 | comment4.params= 33 | comment4.target=boolean\ isPaused() 34 | comment5.params=b 35 | comment5.target=void\ setPaused(boolean) 36 | comment6.params= 37 | comment6.target=void\ togglePaused() 38 | comment7.params=width\ height 39 | comment7.target=void\ resize(int,\ int) 40 | comment8.params= 41 | comment8.target=void\ pause() 42 | comment9.params= 43 | comment9.target=void\ resume() 44 | numComments=21 45 | -------------------------------------------------------------------------------- /Chapter08/BaseScreen.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.Screen; 2 | import com.badlogic.gdx.InputProcessor; 3 | import com.badlogic.gdx.Game; 4 | import com.badlogic.gdx.Gdx; 5 | import com.badlogic.gdx.graphics.GL20; 6 | import com.badlogic.gdx.scenes.scene2d.Stage; 7 | import com.badlogic.gdx.utils.viewport.FitViewport; 8 | import com.badlogic.gdx.InputMultiplexer; 9 | import com.badlogic.gdx.math.Vector3; 10 | import com.badlogic.gdx.scenes.scene2d.ui.Table; 11 | 12 | public abstract class BaseScreen implements Screen, InputProcessor 13 | { 14 | protected BaseGame game; 15 | protected Stage3D mainStage3D; 16 | protected Stage uiStage; 17 | protected Table uiTable; 18 | public final int viewWidth = 800; 19 | public final int viewHeight = 600; 20 | 21 | private boolean paused; 22 | 23 | public BaseScreen(BaseGame g) 24 | { 25 | game = g; 26 | 27 | mainStage3D = new Stage3D(); 28 | uiStage = new Stage( new FitViewport(viewWidth, viewHeight) ); 29 | 30 | uiTable = new Table(); 31 | uiTable.setFillParent(true); 32 | uiStage.addActor(uiTable); 33 | 34 | paused = false; 35 | 36 | InputMultiplexer im = new InputMultiplexer(this, uiStage); 37 | Gdx.input.setInputProcessor( im ); 38 | 39 | create(); 40 | } 41 | 42 | public abstract void create(); 43 | 44 | public abstract void update(float dt); 45 | 46 | // this is the gameloop. update, then render. 47 | public void render(float dt) 48 | { 49 | uiStage.act(dt); 50 | 51 | // only pause gameplay events, not UI events 52 | if ( !isPaused() ) 53 | { 54 | update(dt); 55 | mainStage3D.act(dt); 56 | } 57 | 58 | // render 59 | Gdx.gl.glClearColor(0.5f,0.5f,0.5f,1); 60 | Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 61 | Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT + GL20.GL_DEPTH_BUFFER_BIT); 62 | 63 | mainStage3D.draw(); 64 | uiStage.draw(); 65 | } 66 | 67 | // pause methods 68 | public boolean isPaused() 69 | { return paused; } 70 | 71 | public void setPaused(boolean b) 72 | { paused = b; } 73 | 74 | public void togglePaused() 75 | { paused = !paused; } 76 | 77 | // methods required by Screen interface 78 | public void resize(int width, int height) 79 | { 80 | uiStage.getViewport().update(width, height, true); 81 | } 82 | 83 | public void pause() { } 84 | 85 | public void resume() { } 86 | 87 | public void dispose() { } 88 | 89 | public void show() { } 90 | 91 | public void hide() { } 92 | 93 | // methods required by InputProcessor interface 94 | public boolean keyDown(int keycode) 95 | { return false; } 96 | 97 | public boolean keyUp(int keycode) 98 | { return false; } 99 | 100 | public boolean keyTyped(char c) 101 | { return false; } 102 | 103 | public boolean mouseMoved(int screenX, int screenY) 104 | { return false; } 105 | 106 | public boolean scrolled(int amount) 107 | { return false; } 108 | 109 | public boolean touchDown(int screenX, int screenY, int pointer, int button) 110 | { return false; } 111 | 112 | public boolean touchDragged(int screenX, int screenY, int pointer) 113 | { return false; } 114 | 115 | public boolean touchUp(int screenX, int screenY, int pointer, int button) 116 | { return false; } 117 | } -------------------------------------------------------------------------------- /Chapter08/DemoScreen.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/DemoScreen.class -------------------------------------------------------------------------------- /Chapter08/DemoScreen.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params=g 3 | comment0.target=DemoScreen(BaseGame) 4 | comment1.params= 5 | comment1.target=void\ create() 6 | comment2.params=dt 7 | comment2.target=void\ update(float) 8 | comment3.params=keycode 9 | comment3.target=boolean\ keyDown(int) 10 | numComments=4 11 | -------------------------------------------------------------------------------- /Chapter08/DemoScreen.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.Gdx; 2 | import com.badlogic.gdx.Input.Keys; 3 | import com.badlogic.gdx.graphics.Texture; 4 | import com.badlogic.gdx.graphics.Color; 5 | import com.badlogic.gdx.graphics.Texture.TextureFilter; 6 | import com.badlogic.gdx.graphics.g3d.ModelInstance; 7 | 8 | public class DemoScreen extends BaseScreen 9 | { 10 | BaseActor3D player; 11 | 12 | public DemoScreen(BaseGame g) 13 | { super(g); } 14 | 15 | public void create() 16 | { 17 | BaseActor3D screen = new BaseActor3D(); 18 | Texture screenTex = new Texture(Gdx.files.internal("assets/starfish-collector.png"), true); 19 | screenTex.setFilter( TextureFilter.Linear, TextureFilter.Linear ); 20 | ModelInstance screenInstance = ModelUtils.createBox(16, 12, 0.1f, screenTex, null); 21 | screen.setModelInstance(screenInstance); 22 | mainStage3D.addActor(screen); 23 | 24 | Texture texCrate = new Texture(Gdx.files.internal("assets/crate.jpg"), true); 25 | 26 | BaseActor3D markerO = new BaseActor3D(); 27 | ModelInstance modCrateO = ModelUtils.createBox(1,1,1, texCrate, Color.PURPLE); 28 | markerO.setModelInstance(modCrateO); 29 | markerO.setPosition(0,0,0); 30 | mainStage3D.addActor(markerO); 31 | 32 | BaseActor3D markerX = markerO.clone(); 33 | markerX.setColor(Color.RED); 34 | markerX.setPosition(5,0,0); 35 | mainStage3D.addActor(markerX); 36 | 37 | BaseActor3D markerY = markerO.clone(); 38 | markerY.setColor(Color.GREEN); 39 | markerY.setPosition(0,5,0); 40 | mainStage3D.addActor(markerY); 41 | 42 | BaseActor3D markerZ = markerO.clone(); 43 | markerZ.setColor(Color.BLUE); 44 | markerZ.setPosition(0,0,5); 45 | mainStage3D.addActor(markerZ); 46 | 47 | player = new BaseActor3D(); 48 | Texture[] texSides = { 49 | new Texture(Gdx.files.internal("assets/xneg.png")), 50 | new Texture(Gdx.files.internal("assets/xpos.png")), 51 | new Texture(Gdx.files.internal("assets/yneg.png")), 52 | new Texture(Gdx.files.internal("assets/ypos.png")), 53 | new Texture(Gdx.files.internal("assets/zneg.png")), 54 | new Texture(Gdx.files.internal("assets/zpos.png")) }; 55 | 56 | ModelInstance testModel = ModelUtils.createCubeTexture6(texSides); 57 | player.setModelInstance(testModel); 58 | player.setPosition(0,1,8); 59 | mainStage3D.addActor(player); 60 | 61 | mainStage3D.setCameraPosition(3,4,10); 62 | mainStage3D.setCameraDirection(0,0,0); 63 | 64 | } 65 | 66 | public void update(float dt) 67 | { 68 | float speed = 3.0f; 69 | float rotateSpeed = 45.0f; 70 | 71 | if ( !(Gdx.input.isKeyPressed(Keys.SHIFT_LEFT) || Gdx.input.isKeyPressed(Keys.SHIFT_RIGHT)) ) 72 | { 73 | if ( Gdx.input.isKeyPressed(Keys.W) ) 74 | player.moveForward( speed * dt ); 75 | if ( Gdx.input.isKeyPressed(Keys.S) ) 76 | player.moveForward( -speed * dt ); 77 | if ( Gdx.input.isKeyPressed(Keys.A) ) 78 | player.moveRight( -speed * dt ); 79 | if ( Gdx.input.isKeyPressed(Keys.D) ) 80 | player.moveRight( speed * dt ); 81 | if ( Gdx.input.isKeyPressed(Keys.Q) ) 82 | player.turn( -rotateSpeed * dt ); 83 | if ( Gdx.input.isKeyPressed(Keys.E) ) 84 | player.turn( rotateSpeed * dt ); 85 | if ( Gdx.input.isKeyPressed(Keys.R) ) 86 | player.moveUp( speed * dt ); 87 | if ( Gdx.input.isKeyPressed(Keys.F) ) 88 | player.moveUp( -speed * dt ); 89 | } 90 | 91 | if ( Gdx.input.isKeyPressed(Keys.SHIFT_LEFT) || Gdx.input.isKeyPressed(Keys.SHIFT_RIGHT) ) 92 | { 93 | if (Gdx.input.isKeyPressed(Keys.W)) 94 | mainStage3D.moveCameraForward( speed * dt ); 95 | if (Gdx.input.isKeyPressed(Keys.S)) 96 | mainStage3D.moveCameraForward( -speed * dt ); 97 | if (Gdx.input.isKeyPressed(Keys.A)) 98 | mainStage3D.moveCameraRight( speed * dt ); 99 | if (Gdx.input.isKeyPressed(Keys.D)) 100 | mainStage3D.moveCameraRight( -speed * dt ); 101 | 102 | if (Gdx.input.isKeyPressed(Keys.R)) 103 | mainStage3D.moveCameraUp( speed * dt ); 104 | if (Gdx.input.isKeyPressed(Keys.F)) 105 | mainStage3D.moveCameraUp( -speed * dt ); 106 | 107 | if (Gdx.input.isKeyPressed(Keys.Q)) 108 | mainStage3D.turnCamera(-rotateSpeed * dt); 109 | if (Gdx.input.isKeyPressed(Keys.E)) 110 | mainStage3D.turnCamera(rotateSpeed * dt); 111 | 112 | if (Gdx.input.isKeyPressed(Keys.T)) 113 | mainStage3D.tiltCamera(-rotateSpeed * dt); 114 | if (Gdx.input.isKeyPressed(Keys.G)) 115 | mainStage3D.tiltCamera(rotateSpeed * dt); 116 | } 117 | } 118 | 119 | public boolean keyDown(int keycode) 120 | { 121 | if (keycode == Keys.Z) 122 | game.setScreen( new DemoScreen(game) ); 123 | 124 | return false; 125 | } 126 | } -------------------------------------------------------------------------------- /Chapter08/GameScreen.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/GameScreen.class -------------------------------------------------------------------------------- /Chapter08/GameScreen.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params=g 3 | comment0.target=GameScreen(BaseGame) 4 | comment1.params= 5 | comment1.target=void\ create() 6 | comment2.params=dt 7 | comment2.target=void\ update(float) 8 | numComments=3 9 | -------------------------------------------------------------------------------- /Chapter08/GameScreen.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.Gdx; 2 | import com.badlogic.gdx.Input.Keys; 3 | import com.badlogic.gdx.graphics.Color; 4 | import com.badlogic.gdx.graphics.Texture; 5 | import com.badlogic.gdx.graphics.Texture.TextureFilter; 6 | import com.badlogic.gdx.graphics.g3d.ModelInstance; 7 | import com.badlogic.gdx.graphics.g3d.Model; 8 | import com.badlogic.gdx.graphics.Mesh; 9 | import com.badlogic.gdx.assets.loaders.ModelLoader; 10 | import com.badlogic.gdx.graphics.g3d.loader.ObjLoader; 11 | import com.badlogic.gdx.math.Vector3; 12 | import com.badlogic.gdx.math.Matrix4; 13 | import java.util.ArrayList; 14 | 15 | public class GameScreen extends BaseScreen 16 | { 17 | BaseActor3D player; 18 | ArrayList rockList; 19 | 20 | public GameScreen(BaseGame g) 21 | { super(g); } 22 | 23 | public void create() 24 | { 25 | BaseActor3D floor = new BaseActor3D(); 26 | Texture floorTex = new Texture(Gdx.files.internal("assets/water.jpg"), true); 27 | floorTex.setFilter( TextureFilter.Linear, TextureFilter.Linear ); 28 | ModelInstance floorInstance = ModelUtils.createBox(500, 0.1f, 500, floorTex, Color.GRAY); 29 | floor.setModelInstance(floorInstance); 30 | mainStage3D.addActor(floor); 31 | 32 | player = new BaseActor3D(); 33 | player.setPosition(0,0,0); 34 | 35 | ModelLoader loader = new ObjLoader(); 36 | Model shipModel = loader.loadModel(Gdx.files.internal("assets/ship.obj")); 37 | for (Mesh m : shipModel.meshes) 38 | m.transform( new Matrix4().setToRotation(0,1,0, 180) ); 39 | ModelInstance shipInstance = new ModelInstance(shipModel); 40 | player.setModelInstance(shipInstance); 41 | player.setEllipseBase(); 42 | mainStage3D.addActor(player); 43 | 44 | BaseActor3D skydome = new BaseActor3D(); 45 | Texture skyTex = new Texture(Gdx.files.internal("assets/sky-sphere.png"), true); 46 | ModelInstance skyInstance = ModelUtils.createSphereInv( 500, skyTex, Color.WHITE ); 47 | skydome.setModelInstance(skyInstance); 48 | skydome.setPosition(0,0,0); 49 | mainStage3D.addActor(skydome); 50 | 51 | rockList = new ArrayList(); 52 | Model rockModel = loader.loadModel(Gdx.files.internal("assets/rock.obj")); 53 | ModelInstance rockInstance = new ModelInstance(rockModel); 54 | BaseActor3D baseRock = new BaseActor3D(); 55 | baseRock.setModelInstance(rockInstance); 56 | baseRock.setEllipseBase(); 57 | 58 | BaseActor3D rock1 = baseRock.clone(); 59 | rock1.setPosition(2,0,2); 60 | mainStage3D.addActor(rock1); 61 | rockList.add(rock1); 62 | 63 | BaseActor3D rock2 = baseRock.clone(); 64 | rock2.setPosition(-4,0,4); 65 | mainStage3D.addActor(rock2); 66 | rockList.add(rock2); 67 | 68 | BaseActor3D rock3 = baseRock.clone(); 69 | rock3.setPosition(6,0,6); 70 | mainStage3D.addActor(rock3); 71 | rockList.add(rock3); 72 | 73 | mainStage3D.setCameraPosition(2,3,15); 74 | } 75 | 76 | public void update(float dt) 77 | { 78 | float speed = 3.0f; 79 | float rotateSpeed = 45.0f; 80 | 81 | for ( BaseActor3D rock : rockList ) 82 | player.overlaps(rock, true); 83 | 84 | if ( !(Gdx.input.isKeyPressed(Keys.SHIFT_LEFT) || Gdx.input.isKeyPressed(Keys.SHIFT_RIGHT)) ) 85 | { 86 | if ( Gdx.input.isKeyPressed(Keys.W) ) 87 | player.moveForward( speed * dt ); 88 | 89 | if ( Gdx.input.isKeyPressed(Keys.Q) ) 90 | player.turn( -rotateSpeed * dt ); 91 | if ( Gdx.input.isKeyPressed(Keys.E) ) 92 | player.turn( rotateSpeed * dt ); 93 | } 94 | 95 | mainStage3D.setCameraDirection( player.getPosition() ); 96 | } 97 | } -------------------------------------------------------------------------------- /Chapter08/Launcher1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/Launcher1.class -------------------------------------------------------------------------------- /Chapter08/Launcher1.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication; 2 | import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; 3 | public class Launcher1 4 | { 5 | public static void main () 6 | { 7 | LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 8 | config.width = 800; 9 | config.height = 600; 10 | TheTest myProgram = new TheTest(); 11 | LwjglApplication launcher = new LwjglApplication( myProgram, config ); 12 | } 13 | } -------------------------------------------------------------------------------- /Chapter08/Launcher2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/Launcher2.class -------------------------------------------------------------------------------- /Chapter08/Launcher2.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=void\ main() 4 | numComments=1 5 | -------------------------------------------------------------------------------- /Chapter08/Launcher2.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication; 2 | import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; 3 | public class Launcher2 4 | { 5 | public static void main () 6 | { 7 | LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 8 | 9 | // change configuration settings 10 | config.width = 800; 11 | config.height = 600; 12 | 13 | TheDemo myProgram = new TheDemo(); 14 | LwjglApplication launcher = new LwjglApplication( myProgram, config ); 15 | } 16 | } -------------------------------------------------------------------------------- /Chapter08/Launcher3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/Launcher3.class -------------------------------------------------------------------------------- /Chapter08/Launcher3.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=void\ main() 4 | numComments=1 5 | -------------------------------------------------------------------------------- /Chapter08/Launcher3.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication; 2 | import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; 3 | public class Launcher3 4 | { 5 | public static void main () 6 | { 7 | LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 8 | 9 | // change configuration settings 10 | config.width = 800; 11 | config.height = 600; 12 | 13 | TheGame myProgram = new TheGame(); 14 | LwjglApplication launcher = new LwjglApplication( myProgram, config ); 15 | } 16 | } -------------------------------------------------------------------------------- /Chapter08/ModelUtils.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/ModelUtils.class -------------------------------------------------------------------------------- /Chapter08/ModelUtils.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params=xSize\ ySize\ zSize\ t\ c 3 | comment0.target=com.badlogic.gdx.graphics.g3d.ModelInstance\ createBox(float,\ float,\ float,\ com.badlogic.gdx.graphics.Texture,\ com.badlogic.gdx.graphics.Color) 4 | comment1.params=texSides 5 | comment1.target=com.badlogic.gdx.graphics.g3d.ModelInstance\ createCubeTexture6(com.badlogic.gdx.graphics.Texture[]) 6 | comment2.params=r\ t\ c 7 | comment2.target=com.badlogic.gdx.graphics.g3d.ModelInstance\ createSphere(float,\ com.badlogic.gdx.graphics.Texture,\ com.badlogic.gdx.graphics.Color) 8 | comment3.params=r\ t\ c 9 | comment3.target=com.badlogic.gdx.graphics.g3d.ModelInstance\ createSphereInv(float,\ com.badlogic.gdx.graphics.Texture,\ com.badlogic.gdx.graphics.Color) 10 | numComments=4 11 | -------------------------------------------------------------------------------- /Chapter08/ModelUtils.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.graphics.Color; 2 | import com.badlogic.gdx.graphics.Texture; 3 | import com.badlogic.gdx.graphics.VertexAttributes.Usage; 4 | import com.badlogic.gdx.graphics.g3d.Model; 5 | import com.badlogic.gdx.graphics.g3d.ModelBatch; 6 | import com.badlogic.gdx.graphics.g3d.ModelInstance; 7 | import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; 8 | import com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute; 9 | import com.badlogic.gdx.graphics.g3d.Material; 10 | import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; 11 | import com.badlogic.gdx.graphics.g3d.utils.MeshBuilder; 12 | import com.badlogic.gdx.graphics.g3d.utils.MeshPartBuilder; 13 | import com.badlogic.gdx.graphics.GL20; 14 | import com.badlogic.gdx.graphics.Mesh; 15 | import com.badlogic.gdx.math.Matrix4; 16 | import com.badlogic.gdx.math.Vector3; 17 | import com.badlogic.gdx.math.Quaternion; 18 | 19 | public class ModelUtils 20 | { 21 | public static ModelBuilder modelBuilder = new ModelBuilder(); 22 | 23 | public static ModelInstance createBox( float xSize, float ySize, float zSize, Texture t, Color c ) 24 | { 25 | Material boxMaterial = new Material(); 26 | if (t != null) 27 | boxMaterial.set( TextureAttribute.createDiffuse(t) ); 28 | if (c != null) 29 | boxMaterial.set( ColorAttribute.createDiffuse(c) ); 30 | 31 | int usageCode = Usage.Position + Usage.ColorPacked + Usage.Normal + Usage.TextureCoordinates; 32 | 33 | Model boxModel = modelBuilder.createBox(xSize, ySize, zSize, boxMaterial, usageCode); 34 | Vector3 position = new Vector3(0,0,0); 35 | 36 | ModelInstance box = new ModelInstance(boxModel, position); 37 | return box; 38 | } 39 | 40 | public static ModelInstance createCubeTexture6( Texture[] texSides ) 41 | { 42 | Material[] matSides = new Material[6]; 43 | for (int i = 0; i < 6; i++) 44 | { 45 | matSides[i] = new Material( 46 | TextureAttribute.createDiffuse(texSides[i]) ); 47 | } 48 | 49 | MeshPartBuilder mpb; 50 | ModelBuilder modelBuilder = new ModelBuilder(); 51 | modelBuilder.begin(); 52 | 53 | int usageCode = Usage.Position + Usage.Normal + Usage.TextureCoordinates + Usage.ColorPacked; 54 | 55 | modelBuilder.node().id = "negx"; 56 | mpb = modelBuilder.part("negx", GL20.GL_TRIANGLES, usageCode, matSides[0] ); 57 | mpb.setColor(Color.WHITE); 58 | mpb.rect( -0.5f,-0.5f,-0.5f, -0.5f,-0.5f,+0.5f, -0.5f,+0.5f,+0.5f, -0.5f,+0.5f,-0.5f, 0,0,-1 ); 59 | 60 | modelBuilder.node().id = "posx"; 61 | mpb = modelBuilder.part("posx", GL20.GL_TRIANGLES, usageCode, matSides[1] ); 62 | mpb.setColor(Color.WHITE); 63 | mpb.rect( +0.5f,-0.5f,+0.5f, +0.5f,-0.5f,-0.5f, +0.5f,+0.5f,-0.5f, +0.5f,+0.5f,+0.5f, 0,0,1 ); 64 | 65 | modelBuilder.node().id = "negy"; 66 | mpb = modelBuilder.part("negy", GL20.GL_TRIANGLES, usageCode, matSides[2] ); 67 | mpb.setColor(Color.WHITE); 68 | mpb.rect( -0.5f,-0.5f,+0.5f, -0.5f,-0.5f,-0.5f, +0.5f,-0.5f,-0.5f, +0.5f,-0.5f,+0.5f, 0,-1,0 ); 69 | 70 | modelBuilder.node().id = "posy"; 71 | mpb = modelBuilder.part("posy", GL20.GL_TRIANGLES, usageCode, matSides[3] ); 72 | mpb.setColor(Color.WHITE); 73 | mpb.rect( +0.5f,+0.5f,+0.5f, +0.5f,+0.5f,-0.5f, -0.5f,+0.5f,-0.5f, -0.5f,+0.5f,+0.5f, 0,1,0 ); 74 | 75 | modelBuilder.node().id = "negz"; 76 | mpb = modelBuilder.part("negz", GL20.GL_TRIANGLES, usageCode, matSides[4] ); 77 | mpb.setColor(Color.WHITE); 78 | mpb.rect( +0.5f,-0.5f,-0.5f, -0.5f,-0.5f,-0.5f, -0.5f,+0.5f,-0.5f, +0.5f,+0.5f,-0.5f, 0,0,-1 ); 79 | 80 | modelBuilder.node().id = "posz"; 81 | mpb = modelBuilder.part("posz", GL20.GL_TRIANGLES, usageCode, matSides[5] ); 82 | mpb.setColor(Color.WHITE); 83 | mpb.rect( -0.5f,-0.5f,+0.5f, +0.5f,-0.5f,+0.5f, +0.5f,+0.5f,+0.5f, -0.5f,+0.5f,+0.5f, 0,0,1 ); 84 | 85 | Model model = modelBuilder.end(); 86 | 87 | return new ModelInstance(model); 88 | } 89 | 90 | public static ModelInstance createSphere( float r, Texture t, Color c ) 91 | { 92 | Material sphereMaterial = new Material(); 93 | if (t != null) 94 | sphereMaterial.set( TextureAttribute.createDiffuse(t) ); 95 | if (c != null) 96 | sphereMaterial.set( ColorAttribute.createDiffuse(c) ); 97 | int usageCode = Usage.Position + Usage.ColorPacked + Usage.Normal + Usage.TextureCoordinates; 98 | 99 | Model sphereModel = modelBuilder.createSphere(r,r,r, 32,32, sphereMaterial, usageCode); 100 | Vector3 position = new Vector3(0,0,0); 101 | 102 | ModelInstance sphere = new ModelInstance(sphereModel, position); 103 | return sphere; 104 | } 105 | 106 | public static ModelInstance createSphereInv( float r, Texture t, Color c ) 107 | { 108 | Material sphereMaterial = new Material(); 109 | if (t != null) 110 | sphereMaterial.set( TextureAttribute.createDiffuse(t) ); 111 | if (c != null) 112 | sphereMaterial.set( ColorAttribute.createDiffuse(c) ); 113 | int usageCode = Usage.Position + Usage.ColorPacked + Usage.Normal + Usage.TextureCoordinates; 114 | 115 | Model sphereModel = modelBuilder.createSphere(r,r,r, 32,32, sphereMaterial, usageCode); 116 | for (Mesh m : sphereModel.meshes) 117 | { 118 | m.scale(1,1,-1) ; 119 | } 120 | Vector3 position = new Vector3(0,0,0); 121 | 122 | ModelInstance sphere = new ModelInstance(sphereModel, position); 123 | return sphere; 124 | } 125 | } -------------------------------------------------------------------------------- /Chapter08/README.TXT: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------------------------ 2 | This is the project README file. Here, you should describe your project. 3 | Tell the reader (someone who does not know anything about this project) 4 | all he/she needs to know. The comments should usually include at least: 5 | ------------------------------------------------------------------------ 6 | 7 | PROJECT TITLE: 8 | PURPOSE OF PROJECT: 9 | VERSION or DATE: 10 | HOW TO START THIS PROJECT: 11 | AUTHORS: 12 | USER INSTRUCTIONS: 13 | -------------------------------------------------------------------------------- /Chapter08/Stage3D.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/Stage3D.class -------------------------------------------------------------------------------- /Chapter08/Stage3D.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=Stage3D() 4 | comment1.params=dt 5 | comment1.target=void\ act(float) 6 | comment10.params=dist 7 | comment10.target=void\ moveCameraRight(float) 8 | comment11.params=dist 9 | comment11.target=void\ moveCameraUp(float) 10 | comment12.params=v 11 | comment12.target=void\ setCameraDirection(com.badlogic.gdx.math.Vector3) 12 | comment13.params=x\ y\ z 13 | comment13.target=void\ setCameraDirection(float,\ float,\ float) 14 | comment14.params=angle 15 | comment14.target=void\ turnCamera(float) 16 | comment15.params=angle 17 | comment15.target=void\ tiltCamera(float) 18 | comment2.params= 19 | comment2.target=void\ draw() 20 | comment3.params=ba 21 | comment3.target=void\ addActor(BaseActor3D) 22 | comment4.params=ba 23 | comment4.target=void\ removeActor(BaseActor3D) 24 | comment5.params=x\ y\ z 25 | comment5.target=void\ setCameraPosition(float,\ float,\ float) 26 | comment6.params=v 27 | comment6.target=void\ setCameraPosition(com.badlogic.gdx.math.Vector3) 28 | comment7.params=x\ y\ z 29 | comment7.target=void\ moveCamera(float,\ float,\ float) 30 | comment8.params=v 31 | comment8.target=void\ moveCamera(com.badlogic.gdx.math.Vector3) 32 | comment9.params=dist 33 | comment9.target=void\ moveCameraForward(float) 34 | numComments=16 35 | -------------------------------------------------------------------------------- /Chapter08/Stage3D.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.Gdx; 2 | import com.badlogic.gdx.graphics.Color; 3 | import com.badlogic.gdx.math.Vector3; 4 | import com.badlogic.gdx.graphics.PerspectiveCamera; 5 | import com.badlogic.gdx.graphics.g3d.Environment; 6 | import com.badlogic.gdx.graphics.g3d.ModelBatch; 7 | import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; 8 | import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight; 9 | import java.util.ArrayList; 10 | 11 | public class Stage3D 12 | { 13 | private Environment environment; 14 | private PerspectiveCamera camera; 15 | private final ModelBatch modelBatch; 16 | private ArrayList actorList; 17 | 18 | public Stage3D() 19 | { 20 | environment = new Environment(); 21 | environment.set( new ColorAttribute(ColorAttribute.AmbientLight, 0.7f, 0.7f, 0.7f, 1f) ); 22 | 23 | DirectionalLight dLight = new DirectionalLight(); 24 | Color lightColor = new Color(0.9f, 0.9f, 0.9f, 1); 25 | Vector3 lightVector = new Vector3(-1.0f, -0.75f, -0.25f); 26 | dLight.set( lightColor, lightVector ); 27 | environment.add( dLight ) ; 28 | 29 | camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 30 | camera.position.set(10f, 10f, 10f); 31 | camera.lookAt(0,0,0); 32 | camera.near = 0.01f; 33 | camera.far = 1000f; 34 | camera.update(); 35 | 36 | modelBatch = new ModelBatch(); 37 | 38 | actorList = new ArrayList(); 39 | } 40 | 41 | public void act(float dt) 42 | { 43 | camera.update(); 44 | for (BaseActor3D ba : actorList) 45 | ba.act(dt); 46 | } 47 | 48 | public void draw() 49 | { 50 | modelBatch.begin(camera); 51 | for (BaseActor3D ba : actorList) 52 | ba.draw(modelBatch, environment); 53 | modelBatch.end(); 54 | } 55 | 56 | public void addActor(BaseActor3D ba) 57 | { actorList.add( ba ); } 58 | 59 | public void removeActor(BaseActor3D ba) 60 | { actorList.remove( ba ); } 61 | 62 | public void setCameraPosition(float x, float y, float z) 63 | { camera.position.set(x,y,z); } 64 | public void setCameraPosition(Vector3 v) 65 | { camera.position.set(v); } 66 | 67 | public void moveCamera(float x, float y, float z) 68 | { camera.position.add(x,y,z); } 69 | public void moveCamera(Vector3 v) 70 | { camera.position.add(v); } 71 | 72 | public void moveCameraForward(float dist) 73 | { 74 | Vector3 forward = new Vector3(camera.direction.x, 0, camera.direction.z).nor(); 75 | moveCamera( forward.scl( dist ) ); 76 | } 77 | 78 | public void moveCameraRight(float dist) 79 | { 80 | Vector3 right = new Vector3( camera.direction.z, 0, -camera.direction.x).nor(); 81 | moveCamera( right.scl( dist ) ); 82 | } 83 | 84 | public void moveCameraUp(float dist) 85 | { moveCamera( 0,dist,0 ); } 86 | 87 | public void setCameraDirection(Vector3 v) 88 | { 89 | camera.lookAt(v); 90 | camera.up.set(0,1,0); 91 | } 92 | 93 | public void setCameraDirection(float x, float y, float z) 94 | { setCameraDirection( new Vector3(x,y,z) ); } 95 | 96 | public void turnCamera(float angle) 97 | { camera.rotate( Vector3.Y, -angle ); } 98 | 99 | public void tiltCamera(float angle) 100 | { 101 | Vector3 side = new Vector3(camera.direction.z, 0, -camera.direction.x); 102 | camera.direction.rotate(side, angle); 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /Chapter08/TheDemo.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/TheDemo.class -------------------------------------------------------------------------------- /Chapter08/TheDemo.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=void\ create() 4 | numComments=1 5 | -------------------------------------------------------------------------------- /Chapter08/TheDemo.java: -------------------------------------------------------------------------------- 1 | public class TheDemo extends BaseGame 2 | { 3 | public void create() 4 | { 5 | // initialize resources common to multiple screens 6 | 7 | // initialize and set start screen 8 | DemoScreen gs = new DemoScreen(this); 9 | setScreen( gs ); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter08/TheGame.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/TheGame.class -------------------------------------------------------------------------------- /Chapter08/TheGame.ctxt: -------------------------------------------------------------------------------- 1 | #BlueJ class context 2 | comment0.params= 3 | comment0.target=void\ create() 4 | numComments=1 5 | -------------------------------------------------------------------------------- /Chapter08/TheGame.java: -------------------------------------------------------------------------------- 1 | public class TheGame extends BaseGame 2 | { 3 | public void create() 4 | { 5 | // initialize resources common to multiple screens 6 | 7 | // initialize and set start screen 8 | GameScreen gs = new GameScreen(this); 9 | setScreen( gs ); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter08/TheTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/TheTest.class -------------------------------------------------------------------------------- /Chapter08/TheTest.java: -------------------------------------------------------------------------------- 1 | import com.badlogic.gdx.ApplicationListener; 2 | import com.badlogic.gdx.Gdx; 3 | import com.badlogic.gdx.graphics.GL20; 4 | import com.badlogic.gdx.graphics.Color; 5 | import com.badlogic.gdx.graphics.PerspectiveCamera; 6 | import com.badlogic.gdx.graphics.VertexAttributes.Usage; 7 | import com.badlogic.gdx.graphics.g3d.Environment; 8 | import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; 9 | import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight; 10 | import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; 11 | import com.badlogic.gdx.graphics.g3d.Model; 12 | import com.badlogic.gdx.graphics.g3d.ModelBatch; 13 | import com.badlogic.gdx.graphics.g3d.ModelInstance; 14 | import com.badlogic.gdx.graphics.g3d.Material; 15 | import com.badlogic.gdx.math.Vector3; 16 | 17 | public class TheTest implements ApplicationListener 18 | { 19 | public Environment environment; 20 | public PerspectiveCamera camera; 21 | 22 | public ModelBatch modelBatch; 23 | public ModelInstance boxInstance; 24 | 25 | @Override 26 | public void create() 27 | { 28 | environment = new Environment(); 29 | environment.set( new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f) ); 30 | 31 | DirectionalLight dLight = new DirectionalLight(); 32 | Color lightColor = new Color(0.75f, 0.75f, 0.75f, 1); 33 | Vector3 lightVector = new Vector3(-1.0f, -0.75f, -0.25f); 34 | dLight.set( lightColor, lightVector ); 35 | environment.add( dLight ) ; 36 | 37 | camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 38 | camera.position.set(10f, 10f, 10f); 39 | camera.lookAt(0,0,0); 40 | camera.near = 1f; 41 | camera.far = 300f; 42 | camera.update(); 43 | 44 | ModelBuilder modelBuilder = new ModelBuilder(); 45 | 46 | Material boxMaterial = new Material(); 47 | boxMaterial.set( ColorAttribute.createDiffuse(Color.BLUE) ); 48 | 49 | int usageCode = Usage.Position + Usage.ColorPacked + Usage.Normal; 50 | 51 | Model boxModel = modelBuilder.createBox( 5f, 5f, 5f, boxMaterial, usageCode ); 52 | boxInstance = new ModelInstance(boxModel); 53 | 54 | modelBatch = new ModelBatch(); 55 | } 56 | 57 | public void render() 58 | { 59 | Gdx.gl.glClearColor(1,1,1,1); 60 | Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 61 | Gdx.gl.glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT ); 62 | 63 | modelBatch.begin(camera); 64 | modelBatch.render( boxInstance, environment ); 65 | modelBatch.end(); 66 | } 67 | 68 | public void dispose() { } 69 | 70 | public void resize(int width, int height) { } 71 | 72 | public void pause() {} 73 | 74 | public void resume() {} 75 | } -------------------------------------------------------------------------------- /Chapter08/assets/crate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/crate.jpg -------------------------------------------------------------------------------- /Chapter08/assets/rock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/rock.jpg -------------------------------------------------------------------------------- /Chapter08/assets/rock.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl Material.001 5 | Ns 96.078431 6 | Ka 0.000000 0.000000 0.000000 7 | Kd 0.800000 0.800000 0.800000 8 | Ks 0.000000 0.000000 0.000000 9 | Ni 1.000000 10 | d 1.000000 11 | illum 1 12 | map_Kd rock.jpg 13 | -------------------------------------------------------------------------------- /Chapter08/assets/rock.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.73 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib rock.mtl 4 | o Icosphere 5 | v -0.157419 -0.627006 0.001178 6 | v -0.266108 -0.586017 -0.187692 7 | v -0.340850 -0.569795 -0.228075 8 | v -0.158498 -0.603001 -0.151875 9 | v -0.213360 -0.562538 -0.330772 10 | v 0.090280 -0.505604 -0.541208 11 | v 0.037907 -0.468451 -0.639823 12 | v -0.328620 -0.140499 -0.779063 13 | v -0.069994 -0.327078 -0.798519 14 | v -0.361030 -0.254257 -0.734846 15 | v -0.014026 -0.404355 -0.726082 16 | v -0.138364 -0.493474 -0.565160 17 | v 0.611303 -0.481185 -0.189011 18 | v -0.616193 0.061160 0.564581 19 | v 0.419206 -0.578098 0.384573 20 | v 0.522017 -0.544790 0.348709 21 | v -0.562685 -0.546356 0.105346 22 | v -0.505870 -0.565063 0.021054 23 | v -0.106190 -0.587905 0.480573 24 | v 0.131519 -0.595591 0.409665 25 | v -0.177580 -0.588697 0.431340 26 | v -0.207188 -0.600267 0.314630 27 | v -0.001775 -0.640364 0.201631 28 | v 0.134598 -0.628711 0.281592 29 | v -0.149606 -0.623904 0.158841 30 | v -0.310078 -0.588704 0.219727 31 | v -0.603363 -0.502341 0.185798 32 | v -0.467727 -0.545143 0.197946 33 | v 0.485074 -0.514292 0.462800 34 | v -0.152252 -0.111245 0.837472 35 | v -0.036061 -0.566819 0.522087 36 | v 0.422383 -0.330655 -0.656060 37 | v 0.459389 -0.134224 -0.709528 38 | v 0.652315 -0.017458 -0.621780 39 | v 0.874156 0.071927 0.091373 40 | v 0.703520 -0.414554 -0.143516 41 | v 0.500443 -0.483923 -0.481985 42 | v -0.485575 -0.305153 -0.628780 43 | v 0.714568 -0.360845 -0.272551 44 | v -0.715916 -0.333084 -0.308035 45 | v 0.461669 -0.410845 -0.575127 46 | v 0.536241 -0.500363 -0.350352 47 | v 0.747452 -0.331354 -0.091916 48 | v 0.802698 -0.142628 0.200344 49 | v 0.754536 -0.313275 0.297307 50 | v 0.691344 -0.220775 0.498149 51 | v 0.686925 -0.422394 0.232034 52 | v 0.458877 -0.422109 0.570784 53 | v 0.759834 -0.196837 0.363901 54 | v 0.542281 -0.539189 0.166145 55 | v 0.294381 -0.556131 0.451995 56 | v 0.533278 0.340284 -0.638715 57 | v 0.248416 0.241621 -0.836385 58 | v 0.685688 0.239142 -0.506946 59 | v -0.478102 0.149642 -0.742078 60 | v -0.620358 -0.498150 -0.199856 61 | v -0.788599 -0.317867 -0.192987 62 | v 0.617756 -0.495803 0.313462 63 | v 0.336997 -0.610345 0.223186 64 | v -0.791834 -0.280964 0.195380 65 | v 0.853418 -0.026570 -0.107955 66 | v -0.493774 -0.544070 -0.180517 67 | v -0.708881 -0.410671 0.193947 68 | v -0.711838 -0.428631 -0.190010 69 | v -0.643273 -0.509406 -0.008512 70 | v -0.834360 -0.187709 -0.121341 71 | v -0.837658 -0.149080 0.104945 72 | v 0.773503 -0.261675 0.099547 73 | v -0.769708 -0.192837 -0.307991 74 | v -0.550934 -0.325749 -0.533850 75 | v -0.640739 0.036454 -0.618286 76 | v 0.073761 0.320932 -0.806325 77 | v -0.221124 -0.129605 -0.804901 78 | v 0.208948 0.134940 -0.839979 79 | v 0.117365 0.221474 -0.839010 80 | v 0.000941 0.751833 -0.070074 81 | v 0.009857 0.757472 0.080868 82 | v 0.343667 -0.115669 -0.748917 83 | v -0.710352 0.270668 -0.539880 84 | v 0.544864 0.483203 -0.521684 85 | v -0.358394 0.125187 -0.775453 86 | v -0.085010 0.103767 0.828278 87 | v -0.280705 -0.008940 -0.791922 88 | v -0.660975 -0.255619 -0.437323 89 | v 0.578221 0.397964 -0.559159 90 | v 0.668627 0.348345 -0.464569 91 | v 0.421943 -0.334082 0.656207 92 | v 0.016232 -0.508133 0.622820 93 | v -0.337519 -0.469752 0.619139 94 | v 0.103047 -0.548800 0.513979 95 | v -0.028256 -0.406883 0.732592 96 | v -0.168991 -0.529408 0.589913 97 | v -0.078108 -0.223706 0.821254 98 | v -0.378352 -0.387742 0.688780 99 | v -0.451314 -0.391073 0.580027 100 | v 0.788841 -0.231913 0.248194 101 | v 0.425478 0.375088 0.729509 102 | v 0.446441 0.524055 0.559087 103 | v -0.408713 0.467987 0.642969 104 | v 0.746343 0.502894 -0.097425 105 | v 0.676868 0.553031 0.163198 106 | v -0.800005 0.320732 -0.074003 107 | v -0.709732 0.152895 -0.548785 108 | v 0.733257 -0.196789 -0.466287 109 | v 0.498646 0.257034 -0.693436 110 | v 0.263049 0.003533 -0.796647 111 | v -0.132000 -0.228772 -0.809171 112 | v 0.365390 -0.241899 -0.707027 113 | v -0.395545 -0.409305 -0.593212 114 | v 0.740342 -0.289637 -0.395050 115 | v 0.578046 -0.198830 -0.620391 116 | v 0.787522 -0.094188 -0.398781 117 | v 0.360885 0.215868 -0.778685 118 | v 0.783362 -0.185737 -0.325589 119 | v -0.423974 -0.127607 -0.737984 120 | v 0.802132 -0.171525 -0.134286 121 | v 0.119266 -0.223797 -0.775616 122 | v 0.316158 -0.518857 -0.451678 123 | v -0.366997 -0.517308 -0.398632 124 | v -0.561853 -0.166785 -0.614398 125 | v 0.653699 -0.442375 -0.007848 126 | v 0.226613 -0.406673 -0.651869 127 | v 0.379689 -0.567048 -0.124840 128 | v 0.031833 -0.569087 -0.326230 129 | v -0.723639 -0.030012 -0.465305 130 | v -0.602172 0.215325 -0.650909 131 | v -0.018968 0.619481 -0.462003 132 | v -0.554022 0.456137 -0.583678 133 | v 0.678967 0.120146 -0.569301 134 | v 0.741681 -0.017607 -0.492638 135 | v 0.603394 0.247709 -0.607252 136 | v 0.879749 0.082885 -0.046611 137 | v 0.838609 -0.053988 0.044670 138 | v 0.349810 0.054503 0.762377 139 | v -0.543838 0.368721 -0.636296 140 | v 0.280091 -0.075572 0.771050 141 | v 0.366287 -0.222763 0.707188 142 | v 0.565017 -0.235717 0.600668 143 | v 0.712383 0.389989 0.335923 144 | v -0.559232 -0.229647 0.559565 145 | v -0.389814 0.618134 0.403472 146 | v 0.681014 -0.038703 0.482943 147 | v 0.620678 0.109522 0.531020 148 | v -0.703768 0.063826 0.447608 149 | v -0.648537 -0.075442 0.503630 150 | v -0.668950 0.540843 -0.117718 151 | v 0.777914 0.400577 -0.196035 152 | v 0.850448 0.231592 -0.124229 153 | v 0.246444 0.647653 -0.352681 154 | v -0.741078 0.235535 0.388596 155 | v 0.715705 0.420316 -0.324521 156 | v 0.788571 0.378480 0.220081 157 | v 0.754663 0.496934 0.144800 158 | v -0.814731 0.218800 0.216622 159 | v 0.855066 0.210605 0.117251 160 | v 0.759861 0.239157 -0.361733 161 | v -0.445383 0.651939 -0.285897 162 | v -0.051539 0.687480 -0.313348 163 | v 0.005108 0.511623 -0.621345 164 | v -0.422421 0.443815 -0.614946 165 | v 0.035803 0.410720 -0.729800 166 | v -0.092581 0.564639 -0.535841 167 | v -0.395466 0.276261 -0.715749 168 | v 0.763120 0.363086 -0.286583 169 | v 0.430194 0.427032 -0.623309 170 | v 0.538883 0.638739 -0.112108 171 | v -0.783311 0.345099 -0.180637 172 | v -0.798496 0.341809 0.141909 173 | v -0.822492 0.231468 0.037759 174 | v -0.818701 0.198731 -0.150208 175 | v -0.603237 0.578825 -0.023691 176 | v -0.164804 0.693319 -0.268656 177 | v -0.129657 0.638511 -0.408596 178 | v 0.690285 0.486910 0.264634 179 | v -0.455840 0.654187 0.011192 180 | v -0.312801 0.702115 0.085073 181 | v 0.634781 0.554271 -0.229259 182 | v -0.134136 0.733079 -0.096291 183 | v -0.304595 0.705964 -0.045734 184 | v 0.296894 0.710555 -0.106567 185 | v -0.559958 0.579797 -0.337598 186 | v 0.064032 0.585961 -0.518142 187 | v -0.497437 0.529412 -0.500199 188 | v 0.829197 0.009773 -0.259305 189 | v 0.199534 0.701723 -0.210833 190 | v 0.403832 0.651530 -0.236975 191 | v -0.708247 0.465777 -0.254540 192 | v 0.193500 0.511407 -0.613232 193 | v -0.766834 0.235026 -0.378620 194 | v -0.121801 0.225858 -0.788078 195 | v -0.288681 0.550269 -0.518996 196 | v -0.457096 0.660150 -0.180024 197 | v -0.357364 0.630399 -0.368560 198 | v 0.504574 0.551828 -0.423165 199 | v -0.187095 0.432900 -0.657965 200 | v -0.318690 0.689238 -0.212204 201 | v -0.002509 -0.001444 -0.825858 202 | v 0.621849 0.483916 -0.430574 203 | v 0.510254 0.035789 -0.705557 204 | v -0.497160 0.021411 -0.723106 205 | v 0.011117 0.721368 -0.191689 206 | v 0.337244 0.577629 -0.459084 207 | v 0.040213 0.325890 0.790865 208 | v 0.190813 0.078703 0.813184 209 | v 0.190363 0.603362 -0.468542 210 | v 0.068623 0.658847 -0.369848 211 | v -0.094917 0.236438 0.789649 212 | v 0.036338 0.172791 0.829730 213 | v -0.583743 0.568004 0.179015 214 | v -0.149925 0.342097 0.741439 215 | v -0.645147 0.515458 0.341015 216 | v -0.441748 0.370266 0.665804 217 | v -0.382295 0.550818 0.534488 218 | v -0.236572 -0.199267 0.812144 219 | v -0.225415 0.250437 0.747765 220 | v -0.390218 -0.231911 0.721737 221 | v 0.138682 -0.248930 0.772462 222 | v -0.347772 -0.534795 0.421230 223 | v -0.695392 -0.258778 0.368976 224 | v -0.803232 0.036431 0.270770 225 | v 0.095412 -0.100641 0.820389 226 | v -0.763832 -0.118260 0.318047 227 | v -0.325709 -0.593078 -0.013427 228 | v 0.224780 -0.418563 0.651537 229 | v -0.565369 -0.420604 0.375499 230 | v -0.032449 -0.011050 0.841074 231 | v 0.272682 0.697298 0.212619 232 | v -0.031563 -0.608140 0.366305 233 | v -0.134645 0.735425 0.120400 234 | v 0.546664 0.583432 0.222676 235 | v 0.150435 0.735182 0.201637 236 | v -0.734067 0.413412 0.262000 237 | v -0.520837 0.451743 0.581643 238 | v -0.055916 0.413511 0.725299 239 | v 0.359806 0.536155 0.632761 240 | v -0.522858 0.562732 0.404298 241 | v 0.176682 0.289082 0.805409 242 | v -0.381009 0.219736 0.702174 243 | v 0.404489 0.651315 0.219868 244 | v -0.020572 0.737280 0.262268 245 | v -0.240598 0.023361 0.790206 246 | v -0.737106 0.442818 -0.002367 247 | v -0.499219 0.000925 0.657094 248 | v -0.260100 0.628767 0.434374 249 | v 0.108288 0.454490 0.732133 250 | v -0.585329 0.597920 -0.162645 251 | v -0.587309 0.233338 0.581932 252 | v -0.242085 0.565781 0.549635 253 | v -0.816728 0.003108 -0.254219 254 | v 0.498333 0.353145 0.646306 255 | v -0.116923 0.692041 0.337886 256 | v 0.205236 0.569720 0.609043 257 | v -0.848605 0.013220 -0.039653 258 | v 0.047045 0.748307 0.181225 259 | v 0.571462 0.440075 0.457549 260 | v -0.576306 -0.429147 -0.371290 261 | v 0.113271 0.689200 0.366233 262 | v -0.257466 0.432344 0.667693 263 | v 0.142875 0.741235 0.011725 264 | v 0.719041 0.223348 0.376790 265 | v 0.384122 0.227974 0.742182 266 | v -0.056469 0.575815 0.562671 267 | v 0.369322 0.599464 0.422624 268 | v 0.560839 0.230000 0.577016 269 | v 0.660186 0.574201 0.013985 270 | v 0.451395 0.459430 0.656942 271 | v -0.351426 0.663395 0.247581 272 | v -0.844370 0.051814 0.124200 273 | v 0.416521 0.676233 0.023818 274 | v 0.807716 0.013901 0.246443 275 | v 0.490601 0.005469 0.663931 276 | v -0.022187 0.756753 0.007784 277 | v 0.814209 0.413426 0.015668 278 | v 0.226010 0.358696 -0.774543 279 | v -0.654410 0.409891 -0.506442 280 | v -0.656269 0.421346 0.456178 281 | v 0.305038 0.431889 0.746810 282 | v 0.636044 -0.374892 -0.472345 283 | v -0.203763 -0.378537 -0.744727 284 | v -0.794287 -0.359894 -0.004573 285 | v -0.248581 -0.377181 0.747385 286 | v 0.645108 -0.391570 0.440519 287 | v 0.043240 -0.632702 0.023172 288 | vt 0.983206 0.353903 289 | vt 0.996511 0.271101 290 | vt 1.025553 0.399833 291 | vt 0.802362 0.394855 292 | vt 0.788186 0.318287 293 | vt 0.828783 0.341111 294 | vt 0.973034 0.437116 295 | vt 0.932637 0.349289 296 | vt 0.092261 0.581945 297 | vt 0.122485 0.552154 298 | vt 0.123879 0.633692 299 | vt 0.815187 0.552719 300 | vt 0.798954 0.461201 301 | vt 0.825377 0.498799 302 | vt 0.926791 0.389373 303 | vt 0.876950 0.351756 304 | vt 0.921947 0.425776 305 | vt 0.918137 0.482440 306 | vt 0.876217 0.421900 307 | vt 0.878043 0.270534 308 | vt 0.625641 0.271320 309 | vt 0.594570 0.249132 310 | vt 0.626961 0.178679 311 | vt 0.818868 0.237453 312 | vt 0.771266 0.470620 313 | vt 0.751337 0.438706 314 | vt 0.653320 0.251480 315 | vt 0.679994 0.285094 316 | vt 0.800683 0.280714 317 | vt 0.765304 0.229342 318 | vt 0.835147 0.425047 319 | vt 0.401812 0.335506 320 | vt 0.398290 0.283456 321 | vt 0.435807 0.268497 322 | vt 0.759447 0.396641 323 | vt 0.772472 0.355541 324 | vt 0.732364 0.315837 325 | vt 0.795649 0.506216 326 | vt 0.818602 0.145067 327 | vt 0.151928 0.314200 328 | vt 0.116220 0.338873 329 | vt 0.096321 0.293863 330 | vt 1.298649 0.019411 331 | vt 1.293657 0.105273 332 | vt 0.994143 0.115037 333 | vt 0.298649 0.019411 334 | vt 0.790717 0.062565 335 | vt 0.503652 0.070077 336 | vt 0.097351 0.784876 337 | vt 0.072671 0.738269 338 | vt 0.124286 0.727792 339 | vt 0.239394 0.272714 340 | vt 0.217864 0.213860 341 | vt 0.253833 0.194197 342 | vt 0.126586 0.822495 343 | vt 0.053155 0.807007 344 | vt 0.162835 0.251357 345 | vt 0.198171 0.285381 346 | vt 0.116813 0.225402 347 | vt 0.189281 0.239742 348 | vt 0.172520 0.147657 349 | vt 0.079937 0.373936 350 | vt 0.131023 0.387002 351 | vt 0.977657 0.535384 352 | vt 1.006387 0.526952 353 | vt 0.992429 0.572190 354 | vt 0.953799 0.541498 355 | vt 0.962217 0.495571 356 | vt 0.090029 0.436181 357 | vt 0.109590 0.411472 358 | vt 0.376688 0.070388 359 | vt 0.293657 0.105273 360 | vt 0.075895 0.674114 361 | vt 0.097565 0.486591 362 | vt 0.064294 0.443289 363 | vt 0.051451 0.505346 364 | vt 0.046281 0.422155 365 | vt 0.015498 0.472875 366 | vt 0.025553 0.399833 367 | vt 0.043203 0.318388 368 | vt 1.043203 0.318388 369 | vt 1.096321 0.293863 370 | vt 0.006387 0.526952 371 | vt 1.034649 0.599758 372 | vt 0.984683 0.614474 373 | vt 0.204859 0.330561 374 | vt 0.081816 0.538114 375 | vt 0.070691 0.607444 376 | vt 0.034649 0.599758 377 | vt 0.176786 0.600187 378 | vt 0.210115 0.592087 379 | vt 0.172842 0.665696 380 | vt 0.144233 0.605507 381 | vt 0.159105 0.557186 382 | vt 0.133330 0.445784 383 | vt 0.700289 0.186873 384 | vt 0.690651 0.235688 385 | vt 0.720088 0.147226 386 | vt 0.563880 0.278588 387 | vt 0.557646 0.232967 388 | vt 0.352515 0.295070 389 | vt 0.395776 0.233623 390 | vt 0.540711 0.120614 391 | vt 0.492303 0.149765 392 | vt 0.741545 0.102902 393 | vt 0.633307 0.096681 394 | vt 0.376188 0.123061 395 | vt 0.429661 0.161763 396 | vt 0.859136 0.567116 397 | vt 0.871066 0.507849 398 | vt 0.882594 0.594148 399 | vt 0.907721 0.569221 400 | vt 0.903583 0.615680 401 | vt 0.857625 0.626072 402 | vt 0.844069 0.530954 403 | vt 0.348228 0.181239 404 | vt 0.314309 0.229222 405 | vt 0.278250 0.233847 406 | vt 0.276000 0.311686 407 | vt 0.309376 0.362564 408 | vt 0.260108 0.351526 409 | vt 0.294766 0.273706 410 | vt 0.350442 0.239412 411 | vt 0.172474 0.406133 412 | vt 1.172520 0.147657 413 | vt 0.215618 0.370290 414 | vt 0.223995 0.420985 415 | vt 1.116813 0.225402 416 | vt 1.015498 0.472875 417 | vt 1.014572 0.696421 418 | vt 0.968682 0.668810 419 | vt 0.145124 0.484249 420 | vt 0.439573 0.219415 421 | vt 0.483182 0.217676 422 | vt 0.941467 0.618817 423 | vt 0.532713 0.188987 424 | vt 0.565235 0.164503 425 | vt 0.743304 0.482794 426 | vt 0.775032 0.560510 427 | vt 0.200879 0.547093 428 | vt 0.192615 0.500522 429 | vt 0.014572 0.696421 430 | vt 0.713419 0.692573 431 | vt 0.724370 0.649659 432 | vt 0.738804 0.726416 433 | vt 0.697866 0.657130 434 | vt 0.693141 0.722956 435 | vt 0.656495 0.671360 436 | vt 0.548502 0.552221 437 | vt 0.575750 0.541067 438 | vt 0.571902 0.608847 439 | vt 0.236685 0.480608 440 | vt 0.249364 0.549725 441 | vt 0.819602 0.638115 442 | vt 0.786012 0.608598 443 | vt 0.243640 0.820928 444 | vt 0.266567 0.772084 445 | vt 0.289705 0.872332 446 | vt 0.288954 0.526856 447 | vt 0.313096 0.537114 448 | vt 0.301773 0.606638 449 | vt 0.578871 0.327478 450 | vt 0.548448 0.313044 451 | vt 0.447478 0.717928 452 | vt 0.477364 0.723526 453 | vt 0.477319 0.787460 454 | vt 0.344271 0.895095 455 | vt 0.369286 0.842271 456 | vt 0.440038 0.884288 457 | vt 0.198327 0.812819 458 | vt 0.499744 0.726006 459 | vt 0.516567 0.703670 460 | vt 0.540899 0.749450 461 | vt 0.379388 0.591511 462 | vt 0.355517 0.568707 463 | vt 0.370608 0.492320 464 | vt 0.336534 0.546588 465 | vt 0.329829 0.508905 466 | vt 0.621941 0.448835 467 | vt 0.653116 0.471507 468 | vt 0.644763 0.515624 469 | vt 0.626747 0.614061 470 | vt 0.601233 0.613511 471 | vt 0.598972 0.566537 472 | vt 0.582843 0.427851 473 | vt 0.553748 0.417448 474 | vt 0.556506 0.370366 475 | vt 0.542937 0.674601 476 | vt 0.484389 0.660020 477 | vt 1.001506 0.739581 478 | vt 1.053155 0.807007 479 | vt 0.983170 0.781833 480 | vt 0.947551 0.693002 481 | vt 0.242037 0.615346 482 | vt 0.274698 0.437361 483 | vt 0.913355 0.525740 484 | vt 0.835470 0.801280 485 | vt 0.818176 0.853416 486 | vt 0.792828 0.805012 487 | vt 0.001506 0.739581 488 | vt 0.382912 0.430755 489 | vt 0.401928 0.469401 490 | vt 0.581820 0.382847 491 | vt 0.600311 0.353392 492 | vt 0.642877 0.395685 493 | vt 0.621048 0.366026 494 | vt 0.668619 0.381489 495 | vt 0.757459 0.643213 496 | vt 0.515012 0.305583 497 | vt 0.526570 0.358811 498 | vt 0.035783 0.860778 499 | vt 0.903953 0.663453 500 | vt 0.607328 0.664628 501 | vt 0.669835 0.592538 502 | vt 0.673726 0.334275 503 | vt 0.852677 0.704513 504 | vt 0.910054 0.755431 505 | vt 0.778818 0.667643 506 | vt 0.751617 0.571594 507 | vt 0.725230 0.585214 508 | vt 0.734104 0.531495 509 | vt 0.945927 0.772629 510 | vt 0.213278 0.854699 511 | vt 0.361389 0.394384 512 | vt 0.428475 0.467227 513 | vt 0.418958 0.522803 514 | vt 0.691378 0.498532 515 | vt 0.663688 0.427678 516 | vt 0.709976 0.408144 517 | vt 0.454365 0.460817 518 | vt 0.462362 0.411625 519 | vt 0.497401 0.445341 520 | vt 0.316731 0.413120 521 | vt 0.323253 0.459554 522 | vt 1.035783 0.860778 523 | vt 0.288996 0.937161 524 | vt 0.536394 0.407588 525 | vt 0.533311 0.459625 526 | vt 0.261081 0.488022 527 | vt 0.396235 0.398318 528 | vt 0.456965 0.304652 529 | vt 0.503580 0.396015 530 | vt 0.758232 0.700128 531 | vt 0.793123 0.726607 532 | vt 0.790112 0.897010 533 | vt 0.883836 0.842960 534 | vt 0.415503 0.431426 535 | vt 0.471326 0.361533 536 | vt 0.441422 0.382745 537 | vt 0.210757 0.648268 538 | vt 0.234938 0.678234 539 | vt 0.305841 0.658984 540 | vt 0.275462 0.655172 541 | vt 0.267088 0.615757 542 | vt 0.339458 0.600705 543 | vt 0.525715 0.601670 544 | vt 0.585487 0.880656 545 | vt 0.593245 0.959675 546 | vt 0.558215 0.487912 547 | vt 0.605652 0.778338 548 | vt 0.660888 0.780814 549 | vt 0.633624 0.821195 550 | vt 0.753381 0.806212 551 | vt 0.601290 0.501407 552 | vt 0.966327 0.860269 553 | vt 0.918930 0.904516 554 | vt 0.585837 0.715360 555 | vt 0.644548 0.737817 556 | vt 0.627187 0.554151 557 | vt 0.558745 0.821320 558 | vt 0.675130 0.828891 559 | vt 0.703746 0.778946 560 | vt 0.512698 0.525551 561 | vt 0.513235 0.852859 562 | vt 0.496931 0.584338 563 | vt 0.576796 0.666565 564 | vt 0.493542 0.349626 565 | vt 0.990211 0.951754 566 | vt 0.717643 0.867069 567 | vt 0.481889 0.498425 568 | vt 0.466038 0.552468 569 | vt 0.132225 0.902913 570 | vt 0.660709 0.892287 571 | vt 1.132225 0.902913 572 | vt 0.290800 0.700112 573 | vt 0.334671 0.742404 574 | vt 1.166551 0.965591 575 | vt 0.213161 0.724656 576 | vt 0.254547 0.716820 577 | vt 0.317685 0.825823 578 | vt 0.166551 0.965591 579 | vt 0.188396 0.764749 580 | vt 0.437843 0.676725 581 | vt 0.389433 0.690110 582 | vt 0.431104 0.625932 583 | vt 0.404847 0.789808 584 | vt 0.429309 0.750967 585 | vt 0.340586 0.648281 586 | vt 0.425451 0.572688 587 | usemtl Material.001 588 | s off 589 | f 1/1 283/2 25/3 590 | f 279/4 11/5 12/6 591 | f 1/1 223/7 4/8 592 | f 94/9 281/10 216/11 593 | f 120/12 10/13 38/14 594 | f 2/15 5/16 4/8 595 | f 2/15 223/7 3/17 596 | f 3/17 223/7 62/18 597 | f 5/16 2/15 3/17 598 | f 3/17 119/19 5/16 599 | f 4/8 124/20 283/2 600 | f 283/2 1/1 4/8 601 | f 223/7 1/1 25/3 602 | f 199/21 34/22 111/23 603 | f 5/16 119/19 12/6 604 | f 6/24 124/20 12/6 605 | f 10/13 8/25 73/26 606 | f 199/21 33/27 78/28 607 | f 7/29 122/30 6/24 608 | f 38/14 10/13 109/31 609 | f 109/31 279/4 12/6 610 | f 155/32 35/33 132/34 611 | f 107/35 279/4 10/13 612 | f 9/36 279/4 107/35 613 | f 122/30 7/29 11/5 614 | f 9/36 117/37 11/5 615 | f 10/13 120/12 115/38 616 | f 6/24 122/30 118/39 617 | f 117/37 9/36 107/35 618 | f 124/20 5/16 12/6 619 | f 122/30 11/5 117/37 620 | f 51/40 20/41 24/42 621 | f 119/19 3/17 62/18 622 | f 13/43 121/44 123/45 623 | f 13/46 42/47 39/48 624 | f 14/49 145/50 243/51 625 | f 282/52 58/53 47/54 626 | f 14/49 247/55 144/56 627 | f 15/57 29/58 51/40 628 | f 15/57 59/59 16/60 629 | f 16/60 59/59 50/61 630 | f 16/60 282/52 29/58 631 | f 228/62 20/41 90/63 632 | f 17/64 28/65 27/66 633 | f 17/64 65/67 18/68 634 | f 18/68 65/67 62/18 635 | f 18/68 223/7 28/65 636 | f 19/69 228/62 31/70 637 | f 36/71 121/72 13/46 638 | f 243/51 145/50 140/73 639 | f 19/69 92/74 21/75 640 | f 20/41 51/40 90/63 641 | f 20/41 228/62 24/42 642 | f 92/74 19/69 31/70 643 | f 21/75 218/76 22/77 644 | f 218/76 21/75 92/74 645 | f 22/77 26/78 25/79 646 | f 23/80 228/62 25/79 647 | f 23/81 283/2 24/82 648 | f 283/2 23/81 25/3 649 | f 24/42 59/59 51/40 650 | f 8/25 10/13 115/38 651 | f 26/78 22/77 218/76 652 | f 228/62 22/77 25/79 653 | f 26/78 218/76 28/83 654 | f 27/66 225/84 63/85 655 | f 59/59 15/57 51/40 656 | f 51/40 29/58 48/86 657 | f 89/87 94/9 95/88 658 | f 95/88 225/89 218/76 659 | f 29/58 282/52 48/86 660 | f 30/90 226/91 241/92 661 | f 30/90 214/93 93/94 662 | f 31/70 88/95 92/74 663 | f 31/70 228/62 90/63 664 | f 32/96 122/30 108/97 665 | f 32/96 111/23 41/98 666 | f 33/27 199/21 111/23 667 | f 33/27 108/97 78/28 668 | f 34/22 199/21 129/99 669 | f 34/22 130/100 111/23 670 | f 35/33 155/32 270/101 671 | f 35/33 133/102 132/34 672 | f 110/103 114/104 39/48 673 | f 39/48 36/71 13/46 674 | f 228/62 23/80 24/42 675 | f 37/105 278/106 42/47 676 | f 37/105 118/39 41/98 677 | f 36/71 39/48 43/107 678 | f 42/47 13/43 123/45 679 | f 278/106 110/103 39/48 680 | f 39/48 116/108 43/107 681 | f 278/106 37/105 41/98 682 | f 84/109 256/110 40/111 683 | f 40/111 64/112 57/113 684 | f 118/39 37/105 42/47 685 | f 111/23 32/96 108/97 686 | f 69/114 40/111 57/113 687 | f 42/47 123/45 118/39 688 | f 120/12 38/14 70/115 689 | f 68/116 96/117 45/118 690 | f 116/108 39/48 114/104 691 | f 133/102 68/116 116/108 692 | f 145/50 14/49 144/56 693 | f 45/118 282/52 47/54 694 | f 124/20 4/8 5/16 695 | f 65/67 27/66 63/85 696 | f 46/119 142/120 138/121 697 | f 46/119 282/52 49/122 698 | f 69/114 84/109 40/111 699 | f 47/54 121/72 68/116 700 | f 49/122 96/117 44/123 701 | f 48/86 282/52 138/121 702 | f 225/84 27/66 28/65 703 | f 223/7 18/68 62/18 704 | f 224/124 90/63 51/40 705 | f 48/86 224/124 51/40 706 | f 49/122 270/101 142/120 707 | f 121/72 43/107 68/116 708 | f 50/125 123/45 121/44 709 | f 96/117 68/116 44/123 710 | f 29/58 15/57 16/60 711 | f 224/124 87/126 137/127 712 | f 59/128 24/82 283/2 713 | f 44/123 68/116 133/102 714 | f 64/112 40/111 256/110 715 | f 58/53 282/52 16/60 716 | f 223/7 25/3 26/129 717 | f 219/130 60/131 63/85 718 | f 50/61 58/53 16/60 719 | f 93/94 281/10 91/132 720 | f 61/133 184/134 132/34 721 | f 87/126 138/121 137/127 722 | f 28/65 17/64 18/68 723 | f 142/120 46/119 49/122 724 | f 225/89 28/83 218/76 725 | f 60/131 280/135 63/85 726 | f 223/7 26/129 28/65 727 | f 38/14 109/31 70/115 728 | f 121/72 36/71 43/107 729 | f 112/136 114/104 104/137 730 | f 83/138 8/25 115/38 731 | f 44/123 270/101 49/122 732 | f 108/97 33/27 111/23 733 | f 115/38 200/139 83/138 734 | f 87/126 224/124 48/86 735 | f 95/88 94/9 216/11 736 | f 88/95 224/124 91/132 737 | f 65/67 17/64 27/66 738 | f 92/74 88/95 91/132 739 | f 221/140 93/94 217/141 740 | f 217/141 93/94 91/132 741 | f 228/62 21/75 22/77 742 | f 90/63 224/124 88/95 743 | f 214/93 30/90 241/92 744 | f 218/76 89/87 95/88 745 | f 138/121 87/126 48/86 746 | f 228/62 19/69 21/75 747 | f 145/50 219/142 140/73 748 | f 58/53 50/61 47/54 749 | f 10/13 73/26 107/35 750 | f 112/136 130/100 184/134 751 | f 122/30 32/96 41/98 752 | f 10/13 279/4 109/31 753 | f 114/104 112/136 184/134 754 | f 119/19 109/31 12/6 755 | f 130/100 34/22 129/99 756 | f 122/30 41/98 118/39 757 | f 278/106 41/98 111/23 758 | f 7/29 12/6 11/5 759 | f 43/107 116/108 68/116 760 | f 130/100 112/136 104/137 761 | f 279/4 9/36 11/5 762 | f 88/95 31/70 90/63 763 | f 110/103 104/137 114/104 764 | f 12/6 7/29 6/24 765 | f 124/20 6/24 118/39 766 | f 226/91 30/90 93/94 767 | f 270/101 44/123 133/102 768 | f 223/7 2/15 4/8 769 | f 278/106 39/48 42/47 770 | f 133/102 35/33 270/101 771 | f 8/25 83/138 73/26 772 | f 96/117 49/122 45/118 773 | f 68/116 45/118 47/54 774 | f 247/55 14/49 243/51 775 | f 123/45 50/125 59/128 776 | f 121/72 47/54 50/61 777 | f 128/143 135/144 275/145 778 | f 281/10 89/87 92/74 779 | f 160/146 183/147 191/148 780 | f 149/149 205/150 206/151 781 | f 221/140 136/152 204/153 782 | f 125/154 71/155 120/12 783 | f 99/156 258/157 213/158 784 | f 261/159 97/160 277/161 785 | f 131/162 54/163 129/99 786 | f 280/135 57/113 64/112 787 | f 254/164 77/165 229/166 788 | f 141/167 244/168 267/169 789 | f 258/157 99/156 212/170 790 | f 272/171 76/172 178/173 791 | f 263/174 98/175 255/176 792 | f 266/177 97/160 250/178 793 | f 274/179 72/180 161/181 794 | f 98/175 266/177 255/176 795 | f 282/52 46/119 138/121 796 | f 162/182 127/183 182/184 797 | f 61/133 133/102 116/108 798 | f 165/185 80/186 85/187 799 | f 201/188 76/172 259/189 800 | f 222/190 144/191 220/192 801 | f 280/135 64/112 65/67 802 | f 220/192 67/193 222/190 803 | f 208/194 226/91 204/153 804 | f 271/195 138/121 142/120 805 | f 271/195 137/127 138/121 806 | f 65/67 56/196 62/18 807 | f 170/197 102/198 167/199 808 | f 222/200 145/50 144/56 809 | f 139/201 174/202 255/176 810 | f 280/135 60/131 67/193 811 | f 52/203 131/162 105/204 812 | f 52/203 165/185 85/187 813 | f 53/205 113/206 74/207 814 | f 200/139 71/155 126/208 815 | f 54/163 156/209 129/99 816 | f 131/162 52/203 85/187 817 | f 54/163 131/162 86/210 818 | f 144/56 247/55 150/211 819 | f 56/196 65/67 64/112 820 | f 56/196 256/110 62/18 821 | f 57/113 280/135 66/212 822 | f 116/108 114/104 184/134 823 | f 131/162 85/187 86/210 824 | f 173/213 162/182 191/148 825 | f 162/182 195/214 191/148 826 | f 127/183 162/182 173/213 827 | f 256/110 56/196 64/112 828 | f 281/10 93/94 214/93 829 | f 199/21 78/28 106/215 830 | f 206/151 127/183 173/213 831 | f 59/128 283/2 123/45 832 | f 184/134 61/133 116/108 833 | f 66/212 249/216 69/114 834 | f 136/152 217/141 137/127 835 | f 60/131 222/190 67/193 836 | f 225/89 140/73 219/142 837 | f 67/193 253/217 66/212 838 | f 71/155 103/218 126/208 839 | f 127/183 206/151 182/184 840 | f 195/214 160/146 191/148 841 | f 62/18 256/110 119/19 842 | f 63/85 225/84 219/130 843 | f 63/85 280/135 65/67 844 | f 69/114 57/113 66/212 845 | f 55/219 200/139 126/208 846 | f 226/91 93/94 221/140 847 | f 256/110 70/115 109/31 848 | f 199/21 105/204 131/162 849 | f 55/219 163/220 81/221 850 | f 156/209 54/163 86/210 851 | f 67/193 220/192 268/222 852 | f 222/190 60/131 219/130 853 | f 69/114 249/216 125/154 854 | f 233/223 99/156 213/158 855 | f 70/115 256/110 84/109 856 | f 260/224 139/201 255/176 857 | f 71/155 125/154 103/218 858 | f 174/202 101/225 230/226 859 | f 71/155 200/139 120/12 860 | f 135/144 163/220 126/208 861 | f 72/180 190/227 161/181 862 | f 72/180 274/179 75/228 863 | f 73/26 197/229 107/35 864 | f 74/207 113/206 106/215 865 | f 74/207 197/229 75/228 866 | f 75/228 197/229 190/227 867 | f 265/230 100/231 177/232 868 | f 76/172 272/171 259/189 869 | f 76/172 201/188 178/173 870 | f 113/206 53/205 274/179 871 | f 143/233 260/224 264/234 872 | f 225/89 95/88 140/73 873 | f 244/168 141/167 213/158 874 | f 243/51 140/73 216/11 875 | f 145/50 222/200 219/142 876 | f 220/192 144/191 150/235 877 | f 141/167 236/236 213/158 878 | f 128/143 275/145 183/147 879 | f 198/237 80/186 194/238 880 | f 134/239 204/153 136/152 881 | f 163/220 135/144 160/146 882 | f 160/146 128/143 183/147 883 | f 224/124 137/127 217/141 884 | f 77/165 272/171 229/166 885 | f 271/195 134/239 136/152 886 | f 174/202 139/201 152/240 887 | f 136/152 221/140 217/141 888 | f 271/195 136/152 137/127 889 | f 135/144 128/143 160/146 890 | f 139/201 260/224 152/240 891 | f 134/239 271/195 261/159 892 | f 155/32 132/34 148/241 893 | f 77/165 254/164 259/189 894 | f 78/28 117/37 106/215 895 | f 132/34 184/134 148/241 896 | f 156/209 86/210 151/242 897 | f 278/106 104/137 110/103 898 | f 79/243 103/218 189/244 899 | f 256/110 109/31 119/19 900 | f 129/99 156/209 130/100 901 | f 129/99 199/21 131/162 902 | f 86/210 198/237 151/242 903 | f 242/245 102/198 169/246 904 | f 125/154 249/216 189/244 905 | f 79/243 275/145 126/208 906 | f 275/145 79/243 189/244 907 | f 189/244 103/218 125/154 908 | f 123/45 283/2 124/20 909 | f 282/52 45/118 49/122 910 | f 124/20 118/39 123/45 911 | f 165/185 105/204 113/206 912 | f 80/186 165/185 194/238 913 | f 280/135 67/193 66/212 914 | f 84/109 69/114 125/154 915 | f 184/134 130/100 156/209 916 | f 265/230 101/225 153/247 917 | f 67/193 268/222 253/217 918 | f 200/139 81/221 83/138 919 | f 147/248 100/231 273/249 920 | f 190/227 72/180 75/228 921 | f 199/21 106/215 113/206 922 | f 80/186 198/237 85/187 923 | f 133/102 61/133 132/34 924 | f 272/171 77/165 259/189 925 | f 115/38 120/12 200/139 926 | f 200/139 55/219 81/221 927 | f 113/206 274/179 165/185 928 | f 197/229 106/215 117/37 929 | f 82/250 241/92 226/91 930 | f 197/229 83/138 190/227 931 | f 163/220 55/219 126/208 932 | f 81/221 190/227 83/138 933 | f 197/229 74/207 106/215 934 | f 130/100 104/137 111/23 935 | f 190/227 81/221 163/220 936 | f 249/216 66/212 253/217 937 | f 75/228 53/205 74/207 938 | f 108/97 122/30 117/37 939 | f 241/92 82/250 207/251 940 | f 107/35 197/229 117/37 941 | f 197/229 73/26 83/138 942 | f 117/37 78/28 108/97 943 | f 105/204 199/21 113/206 944 | f 53/205 75/228 274/179 945 | f 82/250 208/194 207/251 946 | f 104/137 278/106 111/23 947 | f 120/12 70/115 84/109 948 | f 103/218 79/243 126/208 949 | f 102/198 170/197 169/246 950 | f 102/198 242/245 167/199 951 | f 101/225 174/202 153/247 952 | f 101/225 265/230 230/226 953 | f 100/231 265/230 273/249 954 | f 100/231 147/248 177/232 955 | f 245/252 203/253 237/254 956 | f 99/156 233/223 212/170 957 | f 237/254 208/194 204/153 958 | f 98/175 263/174 235/255 959 | f 97/160 261/159 250/178 960 | f 97/160 266/177 277/161 961 | f 84/109 125/154 120/12 962 | f 165/185 52/203 105/204 963 | f 95/88 216/11 140/73 964 | f 143/233 271/195 142/120 965 | f 266/177 98/175 235/255 966 | f 85/187 198/237 86/210 967 | f 204/153 134/239 261/159 968 | f 236/236 141/167 267/169 969 | f 275/145 135/144 126/208 970 | f 185/256 149/149 206/151 971 | f 91/132 281/10 92/74 972 | f 91/132 224/124 217/141 973 | f 203/253 208/194 237/254 974 | f 208/194 82/250 226/91 975 | f 89/87 218/76 92/74 976 | f 89/87 281/10 94/9 977 | f 267/169 175/257 209/258 978 | f 195/214 161/181 190/227 979 | f 205/150 149/149 202/259 980 | f 196/260 157/261 192/262 981 | f 260/224 143/233 142/120 982 | f 187/263 275/145 189/244 983 | f 165/185 274/179 188/264 984 | f 154/265 168/266 169/246 985 | f 147/248 151/242 177/232 986 | f 202/259 194/238 165/185 987 | f 172/267 196/260 178/173 988 | f 183/147 193/268 191/148 989 | f 162/182 182/184 159/269 990 | f 151/242 198/237 177/232 991 | f 179/270 229/166 178/173 992 | f 246/271 181/272 187/263 993 | f 181/272 157/261 193/268 994 | f 195/214 159/269 161/181 995 | f 177/232 194/238 186/273 996 | f 176/274 267/169 229/166 997 | f 259/189 180/275 185/256 998 | f 206/151 158/276 201/188 999 | f 154/265 220/192 150/235 1000 | f 147/248 164/277 151/242 1001 | f 188/264 205/150 202/259 1002 | f 168/266 232/278 242/245 1003 | f 147/248 156/209 164/277 1004 | f 147/248 273/249 148/241 1005 | f 146/279 246/271 187/263 1006 | f 148/241 184/134 156/209 1007 | f 148/241 273/249 155/32 1008 | f 149/149 186/273 202/259 1009 | f 268/222 154/265 169/246 1010 | f 166/280 269/281 265/230 1011 | f 152/240 260/224 155/32 1012 | f 274/179 161/181 188/264 1013 | f 152/240 273/249 153/247 1014 | f 276/282 150/211 247/55 1015 | f 246/271 171/283 175/257 1016 | f 246/271 146/279 171/283 1017 | f 152/240 153/247 174/202 1018 | f 166/280 177/232 186/273 1019 | f 269/281 166/280 186/273 1020 | f 156/209 147/248 148/241 1021 | f 157/261 181/272 192/262 1022 | f 196/260 179/270 178/173 1023 | f 157/261 196/260 193/268 1024 | f 186/273 180/275 269/281 1025 | f 158/276 172/267 201/188 1026 | f 158/276 206/151 173/213 1027 | f 154/265 268/222 220/192 1028 | f 164/277 156/209 151/242 1029 | f 159/269 195/214 162/182 1030 | f 159/269 188/264 161/181 1031 | f 188/264 202/259 165/185 1032 | f 160/146 195/214 163/220 1033 | f 206/151 205/150 182/184 1034 | f 271/195 143/233 264/234 1035 | f 163/220 195/214 190/227 1036 | f 172/267 158/276 173/213 1037 | f 194/238 177/232 198/237 1038 | f 167/199 242/245 187/263 1039 | f 167/199 189/244 170/197 1040 | f 150/235 276/284 232/278 1041 | f 253/217 169/246 170/197 1042 | f 268/222 169/246 253/217 1043 | f 169/246 168/266 242/245 1044 | f 170/197 249/216 253/217 1045 | f 189/244 167/199 187/263 1046 | f 242/245 146/279 187/263 1047 | f 171/283 209/258 175/257 1048 | f 193/268 183/147 181/272 1049 | f 193/268 173/213 191/148 1050 | f 201/188 172/267 178/173 1051 | f 154/265 232/278 168/266 1052 | f 183/147 275/145 181/272 1053 | f 192/262 246/271 175/257 1054 | f 255/176 174/202 230/226 1055 | f 209/258 171/283 242/245 1056 | f 179/270 176/274 229/166 1057 | f 176/274 179/270 175/257 1058 | f 146/279 242/245 171/283 1059 | f 270/101 155/32 260/224 1060 | f 267/169 176/274 175/257 1061 | f 192/262 179/270 196/260 1062 | f 142/120 270/101 260/224 1063 | f 179/270 192/262 175/257 1064 | f 204/153 261/159 237/254 1065 | f 180/275 259/189 269/281 1066 | f 259/189 185/256 201/188 1067 | f 173/213 193/268 172/267 1068 | f 273/249 152/240 155/32 1069 | f 180/275 186/273 185/256 1070 | f 205/150 188/264 182/184 1071 | f 246/271 192/262 181/272 1072 | f 153/247 273/249 265/230 1073 | f 186/273 149/149 185/256 1074 | f 232/278 154/265 150/235 1075 | f 177/232 166/280 265/230 1076 | f 182/184 188/264 159/269 1077 | f 172/267 193/268 196/260 1078 | f 181/272 275/145 187/263 1079 | f 272/171 178/173 229/166 1080 | f 194/238 202/259 186/273 1081 | f 185/256 206/151 201/188 1082 | f 249/216 170/197 189/244 1083 | f 203/253 207/251 208/194 1084 | f 237/254 277/161 245/252 1085 | f 258/157 234/285 262/286 1086 | f 204/153 226/91 221/140 1087 | f 276/284 211/287 232/278 1088 | f 215/288 210/289 258/157 1089 | f 213/158 248/290 244/168 1090 | f 203/253 245/252 234/285 1091 | f 210/289 215/288 207/251 1092 | f 244/168 248/290 262/286 1093 | f 211/291 276/282 236/236 1094 | f 211/287 209/258 232/278 1095 | f 212/170 247/55 238/292 1096 | f 247/55 212/170 233/223 1097 | f 213/158 258/157 248/290 1098 | f 213/158 236/236 233/223 1099 | f 214/93 241/92 216/11 1100 | f 210/289 234/285 258/157 1101 | f 277/161 237/254 261/159 1102 | f 281/10 214/93 216/11 1103 | f 207/251 203/253 234/285 1104 | f 209/258 211/291 236/236 1105 | f 248/290 258/157 262/286 1106 | f 242/245 232/278 209/258 1107 | f 241/92 207/251 215/288 1108 | f 276/282 233/223 236/236 1109 | f 215/288 258/157 238/292 1110 | f 243/51 216/11 241/92 1111 | f 233/223 276/282 247/55 1112 | f 231/293 257/294 227/295 1113 | f 238/292 243/51 241/92 1114 | f 236/236 267/169 209/258 1115 | f 244/168 262/286 251/296 1116 | f 234/285 210/289 207/251 1117 | f 229/166 240/297 254/164 1118 | f 257/294 231/293 254/164 1119 | f 245/252 277/161 252/298 1120 | f 257/294 240/297 251/296 1121 | f 243/51 238/292 247/55 1122 | f 277/161 235/255 252/298 1123 | f 240/297 257/294 254/164 1124 | f 234/285 245/252 262/286 1125 | f 250/178 255/176 266/177 1126 | f 241/92 215/288 238/292 1127 | f 258/157 212/170 238/292 1128 | f 250/178 261/159 264/234 1129 | f 262/286 245/252 252/298 1130 | f 231/293 259/189 254/164 1131 | f 252/298 257/294 262/286 1132 | f 235/255 263/174 252/298 1133 | f 240/297 229/166 251/296 1134 | f 267/169 251/296 229/166 1135 | f 267/169 244/168 251/296 1136 | f 235/255 277/161 266/177 1137 | f 239/299 263/174 230/226 1138 | f 239/299 269/281 227/295 1139 | f 269/281 239/299 230/226 1140 | f 269/281 230/226 265/230 1141 | f 263/174 239/299 227/295 1142 | f 257/294 251/296 262/286 1143 | f 259/189 231/293 227/295 1144 | f 227/295 257/294 263/174 1145 | f 227/295 269/281 259/189 1146 | f 255/176 250/178 264/234 1147 | f 255/176 230/226 263/174 1148 | f 271/195 264/234 261/159 1149 | f 255/176 264/234 260/224 1150 | f 257/294 252/298 263/174 1151 | -------------------------------------------------------------------------------- /Chapter08/assets/ship.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'mesh.blend' 2 | # Material Count: 1 3 | 4 | newmtl ship_material 5 | Ns 96.078431 6 | Ka 0.000000 0.000000 0.000000 7 | Kd 0.640000 0.640000 0.640000 8 | Ks 0.500000 0.500000 0.500000 9 | Ni 1.000000 10 | d 1.000000 11 | illum 0 12 | map_Kd ship_diffuse.png 13 | -------------------------------------------------------------------------------- /Chapter08/assets/ship.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.73 (sub 0) OBJ File: 'mesh.blend' 2 | # www.blender.org 3 | mtllib ship.mtl 4 | o cannon.001_Cube.015 5 | v -1.106642 1.295130 -0.889674 6 | v -0.126970 1.295130 -0.822249 7 | v -1.106642 1.449153 -1.043697 8 | v -0.126970 1.516579 -1.043697 9 | v -1.106642 1.141108 -1.043697 10 | v -0.126970 1.073682 -1.043697 11 | v -1.106642 1.295130 -1.197719 12 | v -0.126970 1.295130 -1.265145 13 | v 0.030251 1.295130 -1.043697 14 | v -0.442551 1.295130 -0.836632 15 | v -0.442551 1.502195 -1.043697 16 | v -0.442551 1.295130 -1.250761 17 | v -0.442551 1.088066 -1.043697 18 | v -0.533941 1.460742 -1.043697 19 | v -0.533941 1.295130 -1.209308 20 | v -0.533941 1.129519 -1.043697 21 | v -0.533941 1.295130 -0.878085 22 | v -1.106642 1.295130 -0.942066 23 | v -1.106642 1.396761 -1.043697 24 | v -1.106642 1.193500 -1.043697 25 | v -1.106642 1.295130 -1.145327 26 | v -0.282249 1.295130 -0.926358 27 | v -0.282249 1.412469 -1.043697 28 | v -0.282249 1.177792 -1.043697 29 | v -0.282249 1.295130 -1.161036 30 | vt 0.437500 0.718750 31 | vt 0.437500 0.750000 32 | vt 0.359375 0.750000 33 | vt 0.359375 0.718750 34 | vt 0.437500 0.781250 35 | vt 0.359375 0.781250 36 | vt 0.437500 0.796875 37 | vt 0.359375 0.796875 38 | vt 0.437500 0.687500 39 | vt 0.359375 0.687500 40 | vt 0.468750 0.812500 41 | vt 0.500000 0.812500 42 | vt 0.484375 0.828125 43 | vt 0.468750 0.843750 44 | vt 0.500000 0.843750 45 | vt 0.484375 0.687500 46 | vt 0.484375 0.718750 47 | vt 0.453125 0.718750 48 | vt 0.453125 0.687500 49 | vt 0.484375 0.781250 50 | vt 0.484375 0.796875 51 | vt 0.453125 0.796875 52 | vt 0.453125 0.781250 53 | vt 0.484375 0.750000 54 | vt 0.453125 0.750000 55 | vt 0.359375 0.843750 56 | vt 0.359375 0.828125 57 | vt 0.375000 0.828125 58 | vt 0.375000 0.843750 59 | vt 0.359375 0.875000 60 | vt 0.359375 0.859375 61 | vt 0.375000 0.859375 62 | vt 0.375000 0.875000 63 | vt 0.359375 0.812500 64 | vt 0.375000 0.812500 65 | vt 0.453125 0.843750 66 | vt 0.453125 0.859375 67 | vt 0.453125 0.875000 68 | vt 0.453125 0.828125 69 | vt 0.453125 0.812500 70 | vt 0.468750 0.875000 71 | vt 0.468750 0.859375 72 | vt 0.484375 0.859375 73 | vt 0.484375 0.875000 74 | usemtl ship_material 75 | s off 76 | f 17/1 14/2 3/3 1/4 77 | f 14/2 15/5 7/6 3/3 78 | f 15/5 16/7 5/8 7/6 79 | f 16/9 17/1 1/4 5/10 80 | f 2/11 6/12 9/13 81 | f 4/14 2/11 9/13 82 | f 6/12 8/15 9/13 83 | f 8/15 4/14 9/13 84 | f 6/16 2/17 10/18 13/19 85 | f 8/20 6/21 13/22 12/23 86 | f 4/24 8/20 12/23 11/25 87 | f 2/17 4/24 11/25 10/18 88 | f 13/19 10/18 17/1 16/9 89 | f 12/23 13/22 16/7 15/5 90 | f 11/25 12/23 15/5 14/2 91 | f 10/18 11/25 14/2 17/1 92 | f 3/26 7/27 21/28 19/29 93 | f 5/30 1/31 18/32 20/33 94 | f 7/27 5/34 20/35 21/28 95 | f 1/31 3/26 19/29 18/32 96 | f 18/32 19/29 23/36 22/37 97 | f 20/33 18/32 22/37 24/38 98 | f 19/29 21/28 25/39 23/36 99 | f 21/28 20/35 24/40 25/39 100 | f 23/41 25/42 24/43 22/44 101 | o ropes_Cube.010 102 | v 0.639020 1.294700 -0.413872 103 | v 0.638745 1.385978 -0.623373 104 | v 0.639020 1.284470 -0.417691 105 | v 0.638745 1.375748 -0.627191 106 | v 0.633561 1.289586 -0.415781 107 | v 0.633286 1.380863 -0.625282 108 | v 0.644480 1.289586 -0.415781 109 | v 0.644205 1.380863 -0.625282 110 | v 0.639020 1.188477 -0.453520 111 | v 0.638745 1.288999 -0.687788 112 | v 0.639020 1.178247 -0.457338 113 | v 0.638745 1.278769 -0.691606 114 | v 0.633561 1.183362 -0.455429 115 | v 0.633286 1.283884 -0.689697 116 | v 0.644480 1.183362 -0.455429 117 | v 0.644205 1.283884 -0.689697 118 | v 0.639020 0.961618 -0.552512 119 | v 0.638745 1.081363 -0.838280 120 | v 0.639020 0.951389 -0.556330 121 | v 0.638745 1.071133 -0.842098 122 | v 0.633561 0.956504 -0.554421 123 | v 0.633286 1.076248 -0.840189 124 | v 0.644480 0.956504 -0.554421 125 | v 0.644205 1.076248 -0.840189 126 | v 0.639020 1.079249 -0.503028 127 | v 0.638745 1.189338 -0.762929 128 | v 0.639020 1.069019 -0.506847 129 | v 0.638745 1.179108 -0.766747 130 | v 0.633561 1.074134 -0.504938 131 | v 0.633286 1.184223 -0.764838 132 | v 0.644480 1.074134 -0.504938 133 | v 0.644205 1.184223 -0.764838 134 | v 0.683421 2.270818 -0.001104 135 | v 0.618014 0.862504 -0.990661 136 | v 0.695593 2.270818 -0.001104 137 | v 0.630186 0.862504 -0.990661 138 | v 0.689507 2.264732 -0.001103 139 | v 0.624100 0.856418 -0.990661 140 | v 0.689507 2.276905 -0.001104 141 | v 0.624100 0.868591 -0.990661 142 | v 0.683421 2.270818 -0.001104 143 | v 0.618013 0.844206 -0.600020 144 | v 0.695593 2.270818 -0.001104 145 | v 0.630186 0.844206 -0.600020 146 | v 0.689507 2.264732 -0.001103 147 | v 0.624100 0.838120 -0.600020 148 | v 0.689507 2.276905 -0.001104 149 | v 0.624100 0.850293 -0.600020 150 | v 0.683421 2.270818 -0.001104 151 | v 0.618014 0.862504 -0.793955 152 | v 0.695593 2.270818 -0.001104 153 | v 0.630186 0.862504 -0.793955 154 | v 0.689507 2.264732 -0.001103 155 | v 0.624100 0.856418 -0.793955 156 | v 0.689507 2.276905 -0.001104 157 | v 0.624100 0.868591 -0.793955 158 | v -0.639020 1.294701 -0.413872 159 | v -0.638745 1.385978 -0.623373 160 | v -0.639020 1.284471 -0.417690 161 | v -0.638745 1.375748 -0.627191 162 | v -0.633561 1.289586 -0.415781 163 | v -0.633286 1.380863 -0.625282 164 | v -0.644480 1.289586 -0.415781 165 | v -0.644205 1.380863 -0.625282 166 | v -0.639020 1.188477 -0.453520 167 | v -0.638745 1.288999 -0.687788 168 | v -0.639020 1.178247 -0.457338 169 | v -0.638745 1.278769 -0.691606 170 | v -0.633561 1.183362 -0.455429 171 | v -0.633286 1.283884 -0.689697 172 | v -0.644480 1.183362 -0.455429 173 | v -0.644205 1.283884 -0.689697 174 | v -0.639020 0.961619 -0.552512 175 | v -0.638745 1.081363 -0.838280 176 | v -0.639020 0.951389 -0.556330 177 | v -0.638745 1.071134 -0.842098 178 | v -0.633561 0.956504 -0.554421 179 | v -0.633286 1.076248 -0.840189 180 | v -0.644480 0.956504 -0.554421 181 | v -0.644205 1.076248 -0.840189 182 | v -0.639020 1.079249 -0.503028 183 | v -0.638745 1.189338 -0.762929 184 | v -0.639020 1.069019 -0.506847 185 | v -0.638745 1.179108 -0.766747 186 | v -0.633561 1.074134 -0.504937 187 | v -0.633286 1.184223 -0.764838 188 | v -0.644480 1.074134 -0.504937 189 | v -0.644205 1.184223 -0.764838 190 | v -0.683421 2.270818 -0.001103 191 | v -0.618014 0.862504 -0.990661 192 | v -0.695593 2.270818 -0.001103 193 | v -0.630186 0.862504 -0.990661 194 | v -0.689507 2.264732 -0.001103 195 | v -0.624100 0.856418 -0.990661 196 | v -0.689507 2.276905 -0.001103 197 | v -0.624100 0.868591 -0.990661 198 | v -0.683421 2.270818 -0.001103 199 | v -0.618014 0.844206 -0.600020 200 | v -0.695593 2.270818 -0.001103 201 | v -0.630186 0.844206 -0.600020 202 | v -0.689507 2.264732 -0.001103 203 | v -0.624100 0.838120 -0.600020 204 | v -0.689507 2.276905 -0.001103 205 | v -0.624100 0.850293 -0.600020 206 | v -0.683421 2.270818 -0.001103 207 | v -0.618014 0.862505 -0.793955 208 | v -0.695593 2.270818 -0.001103 209 | v -0.630186 0.862505 -0.793955 210 | v -0.689507 2.264732 -0.001103 211 | v -0.624100 0.856419 -0.793955 212 | v -0.689507 2.276905 -0.001103 213 | v -0.624100 0.868591 -0.793955 214 | v -0.000754 2.859202 -0.001103 215 | v -0.000754 0.984023 -1.479291 216 | v 0.011419 2.859202 -0.001103 217 | v 0.011419 0.984023 -1.479291 218 | v 0.005333 2.853115 -0.001103 219 | v 0.005332 0.977937 -1.479291 220 | v 0.005332 2.865288 -0.001103 221 | v 0.005332 0.990109 -1.479291 222 | v 0.011419 2.859202 0.002682 223 | v 0.011419 1.313359 2.277651 224 | v -0.000754 2.859202 0.002682 225 | v -0.000754 1.313359 2.277651 226 | v 0.005333 2.853116 0.002682 227 | v 0.005332 1.307273 2.277651 228 | v 0.005333 2.865289 0.002682 229 | v 0.005332 1.319446 2.277651 230 | v 0.026070 2.859202 0.006610 231 | v 0.930607 2.300875 0.006610 232 | v 0.026070 2.859202 0.018782 233 | v 0.930607 2.300875 0.018782 234 | v 0.026070 2.853115 0.012696 235 | v 0.930607 2.294789 0.012696 236 | v 0.026070 2.865288 0.012696 237 | v 0.930607 2.306962 0.012696 238 | v -0.026070 2.859202 0.006610 239 | v -0.930607 2.300875 0.006610 240 | v -0.026070 2.859202 0.018782 241 | v -0.930607 2.300875 0.018782 242 | v -0.026070 2.853115 0.012696 243 | v -0.930607 2.294789 0.012696 244 | v -0.026070 2.865288 0.012696 245 | v -0.930607 2.306962 0.012696 246 | v 0.639020 1.294701 -0.413872 247 | v 0.638745 1.385978 -0.623373 248 | v 0.639020 1.284471 -0.417691 249 | v 0.638745 1.375749 -0.627191 250 | v 0.633561 1.289586 -0.415781 251 | v 0.633286 1.380864 -0.625282 252 | v 0.644480 1.289586 -0.415781 253 | v 0.644205 1.380864 -0.625282 254 | v 0.639020 1.188477 -0.453520 255 | v 0.638745 1.288999 -0.687788 256 | v 0.639020 1.178247 -0.457338 257 | v 0.638745 1.278769 -0.691606 258 | v 0.633561 1.183362 -0.455429 259 | v 0.633286 1.283885 -0.689697 260 | v 0.644480 1.183362 -0.455429 261 | v 0.644205 1.283885 -0.689697 262 | v 0.639020 0.961619 -0.552512 263 | v 0.638745 1.081364 -0.838280 264 | v 0.639020 0.951390 -0.556330 265 | v 0.638745 1.071134 -0.842098 266 | v 0.633561 0.956504 -0.554421 267 | v 0.633286 1.076249 -0.840189 268 | v 0.644480 0.956504 -0.554421 269 | v 0.644205 1.076249 -0.840189 270 | v 0.639020 1.079249 -0.503028 271 | v 0.638745 1.189338 -0.762929 272 | v 0.639020 1.069019 -0.506847 273 | v 0.638745 1.179109 -0.766747 274 | v 0.633561 1.074134 -0.504938 275 | v 0.633286 1.184224 -0.764838 276 | v 0.644480 1.074134 -0.504938 277 | v 0.644205 1.184224 -0.764838 278 | v 0.683421 2.270818 -0.001104 279 | v 0.618014 0.862505 -0.990661 280 | v 0.695593 2.270818 -0.001104 281 | v 0.630186 0.862505 -0.990661 282 | v 0.689507 2.264733 -0.001103 283 | v 0.624100 0.856419 -0.990661 284 | v 0.689507 2.276905 -0.001104 285 | v 0.624100 0.868591 -0.990661 286 | v 0.683421 2.270818 -0.001104 287 | v 0.618013 0.844206 -0.600020 288 | v 0.695593 2.270818 -0.001104 289 | v 0.630186 0.844206 -0.600020 290 | v 0.689507 2.264733 -0.001103 291 | v 0.624100 0.838120 -0.600020 292 | v 0.689507 2.276905 -0.001104 293 | v 0.624100 0.850293 -0.600020 294 | v 0.683421 2.270818 -0.001104 295 | v 0.618014 0.862505 -0.793955 296 | v 0.695593 2.270818 -0.001104 297 | v 0.630186 0.862505 -0.793955 298 | v 0.689507 2.264733 -0.001103 299 | v 0.624100 0.856419 -0.793955 300 | v 0.689507 2.276905 -0.001104 301 | v 0.624100 0.868591 -0.793955 302 | v -0.639020 1.294701 -0.413872 303 | v -0.638745 1.385978 -0.623373 304 | v -0.639020 1.284471 -0.417690 305 | v -0.638745 1.375749 -0.627191 306 | v -0.633561 1.289587 -0.415781 307 | v -0.633286 1.380864 -0.625282 308 | v -0.644480 1.289587 -0.415781 309 | v -0.644205 1.380864 -0.625282 310 | v -0.639020 1.188477 -0.453520 311 | v -0.638745 1.288999 -0.687788 312 | v -0.639020 1.178247 -0.457338 313 | v -0.638745 1.278769 -0.691606 314 | v -0.633561 1.183362 -0.455429 315 | v -0.633286 1.283885 -0.689697 316 | v -0.644480 1.183362 -0.455429 317 | v -0.644205 1.283885 -0.689697 318 | v -0.639020 0.961619 -0.552512 319 | v -0.638745 1.081364 -0.838280 320 | v -0.639020 0.951390 -0.556330 321 | v -0.638745 1.071134 -0.842098 322 | v -0.633561 0.956504 -0.554421 323 | v -0.633286 1.076249 -0.840189 324 | v -0.644480 0.956504 -0.554421 325 | v -0.644205 1.076249 -0.840189 326 | v -0.639020 1.079249 -0.503028 327 | v -0.638745 1.189339 -0.762929 328 | v -0.639020 1.069019 -0.506847 329 | v -0.638745 1.179109 -0.766747 330 | v -0.633561 1.074135 -0.504937 331 | v -0.633286 1.184224 -0.764838 332 | v -0.644480 1.074135 -0.504937 333 | v -0.644205 1.184224 -0.764838 334 | v -0.683421 2.270819 -0.001103 335 | v -0.618014 0.862505 -0.990661 336 | v -0.695593 2.270819 -0.001103 337 | v -0.630186 0.862505 -0.990661 338 | v -0.689507 2.264732 -0.001103 339 | v -0.624100 0.856419 -0.990661 340 | v -0.689507 2.276905 -0.001103 341 | v -0.624100 0.868591 -0.990661 342 | v -0.683421 2.270819 -0.001103 343 | v -0.618014 0.844207 -0.600020 344 | v -0.695593 2.270819 -0.001103 345 | v -0.630186 0.844207 -0.600020 346 | v -0.689507 2.264732 -0.001103 347 | v -0.624100 0.838121 -0.600020 348 | v -0.689507 2.276905 -0.001103 349 | v -0.624100 0.850293 -0.600020 350 | v -0.683421 2.270819 -0.001103 351 | v -0.618014 0.862505 -0.793955 352 | v -0.695593 2.270819 -0.001103 353 | v -0.630186 0.862505 -0.793955 354 | v -0.689507 2.264732 -0.001103 355 | v -0.624100 0.856419 -0.793955 356 | v -0.689507 2.276905 -0.001103 357 | v -0.624100 0.868592 -0.793955 358 | v -0.000754 2.859202 -0.001103 359 | v -0.000754 0.984023 -1.479291 360 | v 0.011419 2.859202 -0.001103 361 | v 0.011419 0.984023 -1.479291 362 | v 0.005333 2.853116 -0.001103 363 | v 0.005332 0.977937 -1.479291 364 | v 0.005332 2.865289 -0.001103 365 | v 0.005332 0.990110 -1.479291 366 | v 0.011419 2.859203 0.002682 367 | v 0.011419 1.313360 2.277651 368 | v -0.000754 2.859203 0.002682 369 | v -0.000754 1.313360 2.277651 370 | v 0.005333 2.853116 0.002682 371 | v 0.005332 1.307274 2.277651 372 | v 0.005333 2.865289 0.002682 373 | v 0.005332 1.319446 2.277651 374 | v 0.026070 2.859202 0.006610 375 | v 0.930607 2.300876 0.006610 376 | v 0.026070 2.859202 0.018782 377 | v 0.930607 2.300876 0.018782 378 | v 0.026070 2.853116 0.012696 379 | v 0.930607 2.294790 0.012696 380 | v 0.026070 2.865289 0.012696 381 | v 0.930607 2.306962 0.012696 382 | v -0.026070 2.859202 0.006610 383 | v -0.930607 2.300876 0.006610 384 | v -0.026070 2.859202 0.018782 385 | v -0.930607 2.300876 0.018782 386 | v -0.026070 2.853116 0.012696 387 | v -0.930607 2.294790 0.012696 388 | v -0.026070 2.865289 0.012696 389 | v -0.930607 2.306962 0.012696 390 | vt 0.296875 0.703125 391 | vt 0.281250 0.703125 392 | vt 0.281250 0.687500 393 | vt 0.296875 0.687500 394 | usemtl ship_material 395 | s off 396 | f 29/45 28/46 26/47 27/48 397 | f 33/45 32/46 30/47 31/48 398 | f 37/45 36/46 34/47 35/48 399 | f 41/45 40/46 38/47 39/48 400 | f 45/45 44/46 42/47 43/48 401 | f 49/45 48/46 46/47 47/48 402 | f 53/45 52/46 50/47 51/48 403 | f 57/45 56/46 54/47 55/48 404 | f 61/45 60/46 58/47 59/48 405 | f 65/45 64/46 62/47 63/48 406 | f 69/45 68/46 66/47 67/48 407 | f 73/45 72/46 70/47 71/48 408 | f 77/45 76/46 74/47 75/48 409 | f 81/45 80/46 78/47 79/48 410 | f 85/45 83/48 82/47 84/46 411 | f 89/45 87/48 86/47 88/46 412 | f 93/45 91/48 90/47 92/46 413 | f 97/45 95/48 94/47 96/46 414 | f 101/45 99/48 98/47 100/46 415 | f 105/45 103/48 102/47 104/46 416 | f 109/45 107/48 106/47 108/46 417 | f 113/45 111/48 110/47 112/46 418 | f 117/45 115/48 114/47 116/46 419 | f 121/45 119/48 118/47 120/46 420 | f 125/45 123/48 122/47 124/46 421 | f 129/45 127/48 126/47 128/46 422 | f 133/45 131/48 130/47 132/46 423 | f 137/45 135/48 134/47 136/46 424 | f 141/45 140/46 138/47 139/48 425 | f 145/45 144/46 142/47 143/48 426 | f 149/45 148/46 146/47 147/48 427 | f 153/45 152/46 150/47 151/48 428 | f 157/45 156/46 154/47 155/48 429 | f 161/45 160/46 158/47 159/48 430 | f 165/45 163/48 162/47 164/46 431 | f 169/45 167/48 166/47 168/46 432 | f 173/45 171/48 170/47 172/46 433 | f 177/45 175/48 174/47 176/46 434 | f 181/45 179/48 178/47 180/46 435 | f 185/45 183/48 182/47 184/46 436 | f 189/45 187/48 186/47 188/46 437 | f 193/45 191/48 190/47 192/46 438 | f 197/45 195/48 194/47 196/46 439 | f 201/45 199/48 198/47 200/46 440 | f 205/45 203/48 202/47 204/46 441 | f 209/45 207/48 206/47 208/46 442 | f 213/45 211/48 210/47 212/46 443 | f 217/45 215/48 214/47 216/46 444 | f 221/45 219/48 218/47 220/46 445 | f 225/45 223/48 222/47 224/46 446 | f 229/45 228/46 226/47 227/48 447 | f 233/45 232/46 230/47 231/48 448 | f 237/45 236/46 234/47 235/48 449 | f 241/45 240/46 238/47 239/48 450 | f 245/45 244/46 242/47 243/48 451 | f 249/45 248/46 246/47 247/48 452 | f 253/45 252/46 250/47 251/48 453 | f 257/45 256/46 254/47 255/48 454 | f 261/45 260/46 258/47 259/48 455 | f 265/45 264/46 262/47 263/48 456 | f 269/45 268/46 266/47 267/48 457 | f 273/45 272/46 270/47 271/48 458 | f 277/45 276/46 274/47 275/48 459 | f 281/45 280/46 278/47 279/48 460 | f 285/45 283/48 282/47 284/46 461 | f 289/45 287/48 286/47 288/46 462 | f 293/45 291/48 290/47 292/46 463 | f 297/45 295/48 294/47 296/46 464 | f 301/45 299/48 298/47 300/46 465 | f 305/45 303/48 302/47 304/46 466 | f 309/45 308/46 306/47 307/48 467 | f 313/45 312/46 310/47 311/48 468 | o cannon_Cube.005 469 | v 0.154023 0.000000 0.824393 470 | v 0.221448 -0.000000 -0.155280 471 | v 0.000000 0.154023 0.824393 472 | v -0.000000 0.221448 -0.155280 473 | v 0.000000 -0.154023 0.824393 474 | v -0.000000 -0.221448 -0.155280 475 | v -0.154023 0.000000 0.824393 476 | v -0.221448 -0.000000 -0.155280 477 | v -0.000000 -0.000000 -0.312500 478 | v 0.207064 0.000000 0.160301 479 | v 0.000000 0.207064 0.160301 480 | v -0.207064 0.000000 0.160301 481 | v 0.000000 -0.207064 0.160301 482 | v 0.000000 0.165611 0.251692 483 | v -0.165611 0.000000 0.251692 484 | v 0.000000 -0.165611 0.251692 485 | v 0.165611 0.000000 0.251692 486 | v 0.101631 0.000000 0.824393 487 | v 0.000000 0.101631 0.824393 488 | v 0.000000 -0.101631 0.824393 489 | v -0.101631 0.000000 0.824393 490 | v 0.117339 0.000000 -0.000000 491 | v 0.000000 0.117339 0.000000 492 | v 0.000000 -0.117339 0.000000 493 | v -0.117339 0.000000 0.000000 494 | vt 0.437500 0.718750 495 | vt 0.437500 0.750000 496 | vt 0.359375 0.750000 497 | vt 0.359375 0.718750 498 | vt 0.437500 0.781250 499 | vt 0.359375 0.781250 500 | vt 0.437500 0.796875 501 | vt 0.359375 0.796875 502 | vt 0.437500 0.687500 503 | vt 0.359375 0.687500 504 | vt 0.468750 0.812500 505 | vt 0.500000 0.812500 506 | vt 0.484375 0.828125 507 | vt 0.468750 0.843750 508 | vt 0.500000 0.843750 509 | vt 0.484375 0.687500 510 | vt 0.484375 0.718750 511 | vt 0.453125 0.718750 512 | vt 0.453125 0.687500 513 | vt 0.484375 0.781250 514 | vt 0.484375 0.796875 515 | vt 0.453125 0.796875 516 | vt 0.453125 0.781250 517 | vt 0.484375 0.750000 518 | vt 0.453125 0.750000 519 | vt 0.359375 0.843750 520 | vt 0.359375 0.828125 521 | vt 0.375000 0.828125 522 | vt 0.375000 0.843750 523 | vt 0.359375 0.875000 524 | vt 0.359375 0.859375 525 | vt 0.375000 0.859375 526 | vt 0.375000 0.875000 527 | vt 0.359375 0.812500 528 | vt 0.375000 0.812500 529 | vt 0.453125 0.843750 530 | vt 0.453125 0.859375 531 | vt 0.453125 0.875000 532 | vt 0.453125 0.828125 533 | vt 0.453125 0.812500 534 | vt 0.468750 0.875000 535 | vt 0.468750 0.859375 536 | vt 0.484375 0.859375 537 | vt 0.484375 0.875000 538 | usemtl ship_material 539 | s off 540 | f 330/49 327/50 316/51 314/52 541 | f 327/50 328/53 320/54 316/51 542 | f 328/53 329/55 318/56 320/54 543 | f 329/57 330/49 314/52 318/58 544 | f 315/59 319/60 322/61 545 | f 317/62 315/59 322/61 546 | f 319/60 321/63 322/61 547 | f 321/63 317/62 322/61 548 | f 319/64 315/65 323/66 326/67 549 | f 321/68 319/69 326/70 325/71 550 | f 317/72 321/68 325/71 324/73 551 | f 315/65 317/72 324/73 323/66 552 | f 326/67 323/66 330/49 329/57 553 | f 325/71 326/70 329/55 328/53 554 | f 324/73 325/71 328/53 327/50 555 | f 323/66 324/73 327/50 330/49 556 | f 316/74 320/75 334/76 332/77 557 | f 318/78 314/79 331/80 333/81 558 | f 320/75 318/82 333/83 334/76 559 | f 314/79 316/74 332/77 331/80 560 | f 331/80 332/77 336/84 335/85 561 | f 333/81 331/80 335/85 337/86 562 | f 332/77 334/76 338/87 336/84 563 | f 334/76 333/83 337/88 338/87 564 | f 336/89 338/90 337/91 335/92 565 | o boat_Cube 566 | v -0.633958 0.885905 -0.800765 567 | v -0.633958 1.101737 -0.800765 568 | v -0.633958 0.885905 -1.302534 569 | v -0.633958 1.101737 -1.302534 570 | v 0.087971 0.885905 -0.800765 571 | v 0.087971 1.101737 -0.800765 572 | v 0.087971 0.885905 -1.302534 573 | v 0.087971 1.101737 -1.302534 574 | v -1.008470 1.044682 0.039818 575 | v 1.008470 1.044682 0.039817 576 | v -1.008470 1.084500 0.000000 577 | v 1.008470 1.084499 -0.000000 578 | v -1.008470 1.004864 0.000000 579 | v 1.008470 1.004864 0.000000 580 | v -1.008470 1.044682 -0.039817 581 | v 1.008470 1.044682 -0.039818 582 | v -0.043696 0.975502 1.380726 583 | v -0.018769 1.316140 2.342409 584 | v -0.043696 1.059136 1.353383 585 | v -0.018769 1.352387 2.330559 586 | v 0.044293 0.975502 1.380726 587 | v 0.019366 1.316140 2.342409 588 | v 0.044293 1.059136 1.353383 589 | v 0.019366 1.352387 2.330559 590 | v 0.489526 0.193612 0.514510 591 | v 0.715584 0.952508 0.843054 592 | v 0.446219 0.193611 -1.383026 593 | v 0.672278 0.952507 -1.546963 594 | v 0.654541 0.573060 -1.489174 595 | v 0.697847 0.573060 0.775732 596 | v 0.715584 0.850576 -0.393331 597 | v 0.489526 0.143992 -0.392086 598 | v 0.697847 0.471128 -0.393075 599 | v -0.489526 0.193612 0.514510 600 | v -0.715585 0.952508 0.843054 601 | v -0.446219 0.193611 -1.383026 602 | v -0.672278 0.952507 -1.546963 603 | v 0.000000 1.040392 -1.596520 604 | v 0.000000 0.047502 -1.335843 605 | v 0.000000 1.085145 1.493568 606 | v 0.000000 0.047502 0.843054 607 | v -0.654541 0.573060 -1.489174 608 | v -0.697847 0.573060 0.775733 609 | v 0.000000 0.500005 1.284430 610 | v 0.000000 0.573059 -1.538731 611 | v -0.715584 0.850576 -0.393331 612 | v -0.489526 0.143992 -0.392086 613 | v 0.000000 0.740895 -0.395795 614 | v 0.000000 -0.002118 -0.393331 615 | v -0.697847 0.471128 -0.393076 616 | v 0.000000 0.842826 0.843054 617 | v -1.008470 2.279992 0.039818 618 | v 1.008470 2.279992 0.039817 619 | v -1.008470 2.319810 0.000000 620 | v 1.008470 2.319810 -0.000000 621 | v -1.008470 2.240175 0.000000 622 | v 1.008470 2.240175 0.000000 623 | v -1.008470 2.279992 -0.039817 624 | v 1.008470 2.279992 -0.039818 625 | v 0.000000 2.504366 0.307374 626 | v 0.000000 2.607427 0.357771 627 | v -0.307374 2.504366 0.000000 628 | v -0.357771 2.607427 0.000000 629 | v 0.307374 2.504366 0.000000 630 | v 0.357771 2.607427 0.000000 631 | v 0.000000 2.504366 -0.307374 632 | v 0.000000 2.607427 -0.357771 633 | v 0.000000 0.589795 0.070599 634 | v 0.000000 3.220276 0.035346 635 | v -0.062218 0.589795 0.008381 636 | v -0.026965 3.220276 0.008381 637 | v 0.062218 0.589795 0.008381 638 | v 0.026965 3.220276 0.008381 639 | v 0.000000 0.589795 -0.053837 640 | v 0.000000 3.220276 -0.018585 641 | vt 0.640625 0.859375 642 | vt 0.640625 0.890625 643 | vt 0.625000 0.890625 644 | vt 0.625000 0.859375 645 | vt 0.703125 0.890625 646 | vt 0.703125 0.906250 647 | vt 0.640625 0.906250 648 | vt 0.703125 0.859375 649 | vt 0.718750 0.859375 650 | vt 0.718750 0.890625 651 | vt 0.640625 0.843750 652 | vt 0.703125 0.843750 653 | vt 0.468750 0.968750 654 | vt 0.468750 0.984375 655 | vt 0.437500 0.984375 656 | vt 0.437500 0.968750 657 | vt 0.468750 1.000000 658 | vt 0.437500 1.000000 659 | vt 0.468750 0.937500 660 | vt 0.468750 0.953125 661 | vt 0.437500 0.953125 662 | vt 0.437500 0.937500 663 | vt 0.375000 0.968750 664 | vt 0.406250 0.968750 665 | vt 0.406250 1.000000 666 | vt 0.375000 1.000000 667 | vt 0.687500 1.000000 668 | vt 0.671875 1.000000 669 | vt 0.671875 0.921875 670 | vt 0.687500 0.921875 671 | vt 0.656250 1.000000 672 | vt 0.656250 0.921875 673 | vt 0.640625 1.000000 674 | vt 0.640625 0.921875 675 | vt 0.625000 1.000000 676 | vt 0.625000 0.921875 677 | vt 0.609375 0.984375 678 | vt 0.609375 1.000000 679 | vt 0.593750 1.000000 680 | vt 0.593750 0.984375 681 | vt 1.000000 0.875000 682 | vt 0.937500 0.875000 683 | vt 0.937500 0.828125 684 | vt 1.000000 0.828125 685 | vt 0.859375 0.875000 686 | vt 0.796875 0.875000 687 | vt 0.796875 0.828125 688 | vt 0.859375 0.828125 689 | vt 0.859375 0.781250 690 | vt 0.921875 0.781250 691 | vt 0.921875 0.828125 692 | vt 0.734375 0.875000 693 | vt 0.734375 0.828125 694 | vt 0.796875 0.921875 695 | vt 0.734375 0.921875 696 | vt 0.859375 0.921875 697 | vt 1.000000 0.921875 698 | vt 0.937500 0.921875 699 | vt 0.921875 0.921875 700 | vt 0.921875 0.875000 701 | vt 0.796875 0.937500 702 | vt 0.859375 0.937500 703 | vt 0.859375 1.000000 704 | vt 0.796875 1.000000 705 | vt 0.796875 0.781250 706 | vt 0.734375 1.000000 707 | vt 0.921875 0.937500 708 | vt 0.921875 1.000000 709 | vt 0.234375 0.921875 710 | vt 0.265625 0.921875 711 | vt 0.265625 0.937500 712 | vt 0.234375 0.937500 713 | vt 0.296875 0.921875 714 | vt 0.296875 0.937500 715 | vt 0.328125 0.921875 716 | vt 0.328125 0.937500 717 | vt 0.359375 0.921875 718 | vt 0.359375 0.937500 719 | vt 0.296875 1.000000 720 | vt 0.296875 0.968750 721 | vt 0.328125 0.968750 722 | vt 0.328125 1.000000 723 | vt 0.281250 0.953125 724 | vt 0.281250 1.000000 725 | vt 0.234375 1.000000 726 | vt 0.234375 0.953125 727 | vt 0.546875 1.000000 728 | vt 0.531250 1.000000 729 | vt 0.531250 0.921875 730 | vt 0.546875 0.921875 731 | vt 0.515625 1.000000 732 | vt 0.515625 0.921875 733 | vt 0.578125 1.000000 734 | vt 0.562500 1.000000 735 | vt 0.562500 0.921875 736 | vt 0.578125 0.921875 737 | vt 0.500000 0.984375 738 | vt 0.500000 1.000000 739 | vt 0.484375 1.000000 740 | vt 0.484375 0.984375 741 | usemtl ship_material 742 | s off 743 | f 340/93 342/94 341/95 339/96 744 | f 342/94 346/97 345/98 341/99 745 | f 346/97 344/100 343/101 345/102 746 | f 344/100 340/93 339/103 343/104 747 | f 344/100 346/97 342/94 340/93 748 | f 348/105 350/106 349/107 347/108 749 | f 350/106 354/109 353/110 349/107 750 | f 354/111 352/112 351/113 353/114 751 | f 352/112 348/105 347/108 351/113 752 | f 352/115 354/116 350/117 348/118 753 | f 349/116 353/117 351/118 347/115 754 | f 356/119 358/120 357/121 355/122 755 | f 358/120 362/123 361/124 357/121 756 | f 362/123 360/125 359/126 361/124 757 | f 360/125 356/127 355/128 359/126 758 | f 360/129 362/130 358/131 356/132 759 | f 383/133 367/134 365/135 377/136 760 | f 371/137 368/138 363/139 370/140 761 | f 387/141 377/142 365/143 370/140 762 | f 368/138 382/144 379/145 363/139 763 | f 364/146 378/147 382/144 368/138 764 | f 369/148 364/146 368/138 371/137 765 | f 376/149 366/150 367/134 383/133 766 | f 366/151 369/148 371/137 367/152 767 | f 364/153 369/154 386/155 389/156 768 | f 379/157 387/141 370/140 363/139 769 | f 367/152 371/137 370/140 365/143 770 | f 378/158 364/153 389/156 771 | f 386/155 369/154 366/159 376/160 772 | f 383/133 377/136 374/135 380/134 773 | f 388/137 385/140 372/139 381/138 774 | f 387/141 385/140 374/143 377/142 775 | f 381/138 372/139 379/145 382/144 776 | f 373/146 381/138 382/144 378/147 777 | f 384/148 388/137 381/138 373/146 778 | f 376/149 383/133 380/134 375/150 779 | f 375/151 380/152 388/137 384/148 780 | f 373/153 389/156 386/155 384/154 781 | f 379/157 372/139 385/140 387/141 782 | f 380/152 374/143 385/140 388/137 783 | f 378/158 389/156 373/153 784 | f 386/155 376/160 375/159 384/154 785 | f 391/105 393/106 392/107 390/108 786 | f 393/106 397/109 396/110 392/107 787 | f 397/111 395/112 394/113 396/114 788 | f 395/112 391/105 390/108 394/113 789 | f 395/115 397/116 393/117 391/118 790 | f 392/116 396/117 394/118 390/115 791 | f 399/161 401/162 400/163 398/164 792 | f 401/162 405/165 404/166 400/163 793 | f 405/165 403/167 402/168 404/166 794 | f 403/167 399/169 398/170 402/168 795 | f 398/171 400/172 404/173 402/174 796 | f 403/175 405/176 401/177 399/178 797 | f 407/179 409/180 408/181 406/182 798 | f 409/180 413/183 412/184 408/181 799 | f 413/185 411/186 410/187 412/188 800 | f 411/186 407/179 406/182 410/187 801 | f 411/189 413/190 409/191 407/192 802 | o cloth_Cube.008 803 | v 0.026608 3.137327 0.012696 804 | v 0.026608 2.904441 0.012696 805 | v 0.507251 3.137327 0.012696 806 | v 0.507251 2.904441 0.012696 807 | v 0.026608 3.020884 0.012696 808 | v 0.507251 3.020884 0.012696 809 | v -1.008470 2.279993 0.039818 810 | v 1.008470 2.279993 0.039817 811 | v -1.008470 1.044682 0.039818 812 | v 1.008470 1.044682 0.039818 813 | v -1.074666 1.546063 0.320350 814 | v 1.074666 1.546063 0.320350 815 | v 0.000000 2.279993 0.039818 816 | v 0.000000 1.044682 0.039818 817 | v 0.000000 1.546063 0.437082 818 | v 0.026608 3.137327 0.012696 819 | v 0.026608 2.904441 0.012696 820 | v 0.507251 3.137327 0.012696 821 | v 0.507251 2.904441 0.012696 822 | v 0.026608 3.020884 0.012696 823 | v 0.507251 3.020884 0.012696 824 | v -1.008470 2.279993 0.039818 825 | v 1.008470 2.279993 0.039817 826 | v -1.008470 1.044682 0.039818 827 | v 1.008470 1.044682 0.039818 828 | v -1.074666 1.546063 0.320350 829 | v 1.074666 1.546063 0.320350 830 | v 0.000000 2.279993 0.039818 831 | v 0.000000 1.044682 0.039818 832 | v 0.000000 1.546063 0.437082 833 | vt 0.312500 0.765625 834 | vt -0.000000 0.765625 835 | vt -0.000000 0.671875 836 | vt 0.312500 0.671875 837 | vt 0.312500 0.859375 838 | vt -0.000000 0.859375 839 | vt 0.093750 0.921875 840 | vt 0.093750 0.875000 841 | vt 0.000000 0.875000 842 | vt 0.000000 0.921875 843 | vt 0.093750 1.000000 844 | vt 0.000000 1.000000 845 | vt 0.187500 1.000000 846 | vt 0.187500 0.921875 847 | vt 0.187500 0.875000 848 | usemtl ship_material 849 | s off 850 | f 419/193 418/194 415/195 417/196 851 | f 416/197 414/198 418/194 419/193 852 | f 428/199 427/200 423/201 425/202 853 | f 426/203 428/199 425/202 421/204 854 | f 420/205 424/206 428/199 426/203 855 | f 424/206 422/207 427/200 428/199 856 | f 434/193 432/196 430/195 433/194 857 | f 431/197 434/193 433/194 429/198 858 | f 443/199 440/202 438/201 442/200 859 | f 441/203 436/204 440/202 443/199 860 | f 435/205 441/203 443/199 439/206 861 | f 439/206 443/199 442/200 437/207 862 | -------------------------------------------------------------------------------- /Chapter08/assets/ship_diffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/ship_diffuse.png -------------------------------------------------------------------------------- /Chapter08/assets/sky-sphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/sky-sphere.png -------------------------------------------------------------------------------- /Chapter08/assets/starfish-collector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/starfish-collector.png -------------------------------------------------------------------------------- /Chapter08/assets/water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/water.jpg -------------------------------------------------------------------------------- /Chapter08/assets/xneg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/xneg.png -------------------------------------------------------------------------------- /Chapter08/assets/xpos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/xpos.png -------------------------------------------------------------------------------- /Chapter08/assets/yneg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/yneg.png -------------------------------------------------------------------------------- /Chapter08/assets/ypos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/ypos.png -------------------------------------------------------------------------------- /Chapter08/assets/zneg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/zneg.png -------------------------------------------------------------------------------- /Chapter08/assets/zpos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/Chapter08/assets/zpos.png -------------------------------------------------------------------------------- /Chapter08/package.bluej: -------------------------------------------------------------------------------- 1 | #BlueJ package file 2 | dependency1.from=BaseScreen 3 | dependency1.to=BaseGame 4 | dependency1.type=UsesDependency 5 | dependency10.from=DemoScreen 6 | dependency10.to=BaseGame 7 | dependency10.type=UsesDependency 8 | dependency11.from=DemoScreen 9 | dependency11.to=Stage3D 10 | dependency11.type=UsesDependency 11 | dependency12.from=DemoScreen 12 | dependency12.to=BaseActor3D 13 | dependency12.type=UsesDependency 14 | dependency13.from=DemoScreen 15 | dependency13.to=ModelUtils 16 | dependency13.type=UsesDependency 17 | dependency14.from=Launcher2 18 | dependency14.to=TheDemo 19 | dependency14.type=UsesDependency 20 | dependency15.from=TheDemo 21 | dependency15.to=DemoScreen 22 | dependency15.type=UsesDependency 23 | dependency16.from=BaseScreen 24 | dependency16.to=Stage3D 25 | dependency16.type=UsesDependency 26 | dependency2.from=GameScreen 27 | dependency2.to=BaseGame 28 | dependency2.type=UsesDependency 29 | dependency3.from=TheGame 30 | dependency3.to=GameScreen 31 | dependency3.type=UsesDependency 32 | dependency4.from=Launcher3 33 | dependency4.to=TheGame 34 | dependency4.type=UsesDependency 35 | dependency5.from=Stage3D 36 | dependency5.to=BaseActor3D 37 | dependency5.type=UsesDependency 38 | dependency6.from=GameScreen 39 | dependency6.to=Stage3D 40 | dependency6.type=UsesDependency 41 | dependency7.from=GameScreen 42 | dependency7.to=BaseActor3D 43 | dependency7.type=UsesDependency 44 | dependency8.from=GameScreen 45 | dependency8.to=ModelUtils 46 | dependency8.type=UsesDependency 47 | dependency9.from=Launcher1 48 | dependency9.to=TheTest 49 | dependency9.type=UsesDependency 50 | objectbench.height=100 51 | objectbench.width=890 52 | package.editor.height=822 53 | package.editor.width=1097 54 | package.editor.x=537 55 | package.editor.y=22 56 | package.numDependencies=16 57 | package.numTargets=13 58 | package.showExtends=true 59 | package.showUses=true 60 | project.charset=UTF-8 61 | target1.editor.height=700 62 | target1.editor.width=900 63 | target1.editor.x=276 64 | target1.editor.y=51 65 | target1.height=50 66 | target1.name=Launcher1 67 | target1.naviview.expanded=false 68 | target1.showInterface=false 69 | target1.type=ClassTarget 70 | target1.typeParameters= 71 | target1.width=90 72 | target1.x=90 73 | target1.y=20 74 | target10.editor.height=700 75 | target10.editor.width=900 76 | target10.editor.x=62 77 | target10.editor.y=211 78 | target10.height=50 79 | target10.name=TheGame 80 | target10.naviview.expanded=false 81 | target10.showInterface=false 82 | target10.type=ClassTarget 83 | target10.typeParameters= 84 | target10.width=80 85 | target10.x=180 86 | target10.y=360 87 | target11.editor.height=700 88 | target11.editor.width=900 89 | target11.editor.x=574 90 | target11.editor.y=121 91 | target11.height=50 92 | target11.name=BaseScreen 93 | target11.naviview.expanded=false 94 | target11.showInterface=false 95 | target11.type=AbstractTarget 96 | target11.typeParameters= 97 | target11.width=90 98 | target11.x=470 99 | target11.y=260 100 | target12.editor.height=1050 101 | target12.editor.width=1938 102 | target12.editor.x=-9 103 | target12.editor.y=-9 104 | target12.height=50 105 | target12.name=TheTest 106 | target12.naviview.expanded=false 107 | target12.showInterface=false 108 | target12.type=ClassTarget 109 | target12.typeParameters= 110 | target12.width=80 111 | target12.x=240 112 | target12.y=20 113 | target13.editor.height=700 114 | target13.editor.width=900 115 | target13.editor.x=62 116 | target13.editor.y=211 117 | target13.height=50 118 | target13.name=BaseGame 119 | target13.naviview.expanded=false 120 | target13.showInterface=false 121 | target13.type=AbstractTarget 122 | target13.typeParameters= 123 | target13.width=90 124 | target13.x=550 125 | target13.y=70 126 | target2.editor.height=700 127 | target2.editor.width=900 128 | target2.editor.x=62 129 | target2.editor.y=211 130 | target2.height=50 131 | target2.name=Launcher3 132 | target2.naviview.expanded=false 133 | target2.showInterface=false 134 | target2.type=ClassTarget 135 | target2.typeParameters= 136 | target2.width=90 137 | target2.x=90 138 | target2.y=310 139 | target3.editor.height=700 140 | target3.editor.width=900 141 | target3.editor.x=31 142 | target3.editor.y=11 143 | target3.height=50 144 | target3.name=Launcher2 145 | target3.naviview.expanded=false 146 | target3.showInterface=false 147 | target3.type=ClassTarget 148 | target3.typeParameters= 149 | target3.width=90 150 | target3.x=90 151 | target3.y=120 152 | target4.editor.height=700 153 | target4.editor.width=900 154 | target4.editor.x=31 155 | target4.editor.y=11 156 | target4.height=50 157 | target4.name=TheDemo 158 | target4.naviview.expanded=false 159 | target4.showInterface=false 160 | target4.type=ClassTarget 161 | target4.typeParameters= 162 | target4.width=80 163 | target4.x=180 164 | target4.y=170 165 | target5.editor.height=1050 166 | target5.editor.width=1924 167 | target5.editor.x=-2 168 | target5.editor.y=10 169 | target5.height=50 170 | target5.name=BaseActor3D 171 | target5.naviview.expanded=false 172 | target5.showInterface=false 173 | target5.type=ClassTarget 174 | target5.typeParameters= 175 | target5.width=100 176 | target5.x=440 177 | target5.y=580 178 | target6.editor.height=836 179 | target6.editor.width=1217 180 | target6.editor.x=488 181 | target6.editor.y=61 182 | target6.height=50 183 | target6.name=DemoScreen 184 | target6.naviview.expanded=false 185 | target6.showInterface=false 186 | target6.type=ClassTarget 187 | target6.typeParameters= 188 | target6.width=100 189 | target6.x=250 190 | target6.y=220 191 | target7.editor.height=1050 192 | target7.editor.width=1653 193 | target7.editor.x=640 194 | target7.editor.y=0 195 | target7.height=50 196 | target7.name=Stage3D 197 | target7.naviview.expanded=false 198 | target7.showInterface=false 199 | target7.type=ClassTarget 200 | target7.typeParameters= 201 | target7.width=80 202 | target7.x=610 203 | target7.y=490 204 | target8.editor.height=1050 205 | target8.editor.width=1924 206 | target8.editor.x=75 207 | target8.editor.y=202 208 | target8.height=50 209 | target8.name=GameScreen 210 | target8.naviview.expanded=false 211 | target8.showInterface=false 212 | target8.type=ClassTarget 213 | target8.typeParameters= 214 | target8.width=100 215 | target8.x=250 216 | target8.y=410 217 | target9.editor.height=1050 218 | target9.editor.width=1938 219 | target9.editor.x=-9 220 | target9.editor.y=-9 221 | target9.height=50 222 | target9.name=ModelUtils 223 | target9.naviview.expanded=false 224 | target9.showInterface=false 225 | target9.type=ClassTarget 226 | target9.typeParameters= 227 | target9.width=80 228 | target9.x=60 229 | target9.y=550 230 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beg-java-game-dev-w-libgdx/00bf14c657a0a7f01677d8a950a6babe7514f208/LICENSE.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Apress Source Code 2 | 3 | This repository accompanies [*Beginning Java Game Development with LibGDX*](http://www.apress.com/9781484215012) by LEE STEMKOSKI (Apress, 2015). 4 | 5 | ![Cover image](9781484215012.jpg) 6 | 7 | Download the files as a zip using the green button, or clone the repository to your machine using Git. 8 | 9 | ## Releases 10 | 11 | Release v1.0 corresponds to the code in the published book, without corrections or updates. 12 | 13 | ## Contributions 14 | 15 | See the file Contributing.md for more information on how you can contribute to this repository. 16 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing to Apress Source Code 2 | 3 | Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers. 4 | 5 | ## How to Contribute 6 | 7 | 1. Make sure you have a GitHub account. 8 | 2. Fork the repository for the relevant book. 9 | 3. Create a new branch on which to make your change, e.g. 10 | `git checkout -b my_code_contribution` 11 | 4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted. 12 | 5. Submit a pull request. 13 | 14 | Thank you for your contribution! --------------------------------------------------------------------------------