diff --git a/com/danitheskunk/skunkworks/Test3D.java b/com/danitheskunk/skunkworks/Test3D.java index 79cd825..19c3a51 100644 --- a/com/danitheskunk/skunkworks/Test3D.java +++ b/com/danitheskunk/skunkworks/Test3D.java @@ -1,5 +1,6 @@ package com.danitheskunk.skunkworks; +import com.danitheskunk.skunkworks.gfx.Color; import com.danitheskunk.skunkworks.gfx.IRenderContext; import com.danitheskunk.skunkworks.gfx.ITexture; import com.danitheskunk.skunkworks.gfx.Image; @@ -12,6 +13,7 @@ import java.nio.IntBuffer; @SuppressWarnings("ALL") public class Test3D extends BaseGame { private final Mesh[] meshes; + int trans; public Test3D() { super(new Vec2i(1920, 1080), "Skunkworks 3d test"); @@ -20,12 +22,13 @@ public class Test3D extends BaseGame { Assimp.aiGetVersionMinor(), Assimp.aiGetVersionPatch() ); + trans = 255; var path = "C:\\stream\\models\\Dani.glb"; //path = "C:\\stream\\models\\Amber_Arakada_V5_Blendshape.glb"; //path = "C:\\stream\\models\\Temp Chan 3.glb"; var bytes = engine.loadBytes(path); var flags = Assimp.aiProcess_Triangulate; - flags |= Assimp.aiProcess_PreTransformVertices; + //flags |= Assimp.aiProcess_PreTransformVertices; var ai = Assimp.aiImportFile(path, flags); if(ai == null) { throw new RuntimeException("couldn't load model because: " + @@ -53,9 +56,8 @@ public class Test3D extends BaseGame { null ); var tpathstr = tpath.dataString(); - matTex[i] = tpathstr.startsWith("*") ? - Integer.parseInt(tpathstr.substring( - 1)) : -1; + matTex[i] = tpathstr.startsWith("*") ? Integer.parseInt(tpathstr.substring( + 1)) : -1; System.out.printf("tex count: %d, path: %s\n", texCount, tpath.dataString() @@ -111,8 +113,22 @@ public class Test3D extends BaseGame { @Override protected void render3D(IRenderContext3D rc) { for(int i = 0; i < meshes.length; ++i) { - rc.renderMesh(meshes[i]); + //rc.renderMesh(meshes[i], new Color(255, 255, 255)); + } + rc.clearDepth(); + rc.renderMesh(meshes[trans * (meshes.length-1) / 255]); + for(int i = 0; i < meshes.length; ++i) { + //rc.renderMesh(meshes[i], new Color(255, 255, 255, 255 - trans)); } //rc.renderMesh(meshes[14]); } + + @Override + protected void update(double delta) { + if(trans > 0) { + trans -= 1; + } else { + trans = 255; + } + } } diff --git a/com/danitheskunk/skunkworks/backends/gl/RenderContext3D.java b/com/danitheskunk/skunkworks/backends/gl/RenderContext3D.java index 2f913a3..810e34c 100644 --- a/com/danitheskunk/skunkworks/backends/gl/RenderContext3D.java +++ b/com/danitheskunk/skunkworks/backends/gl/RenderContext3D.java @@ -72,6 +72,11 @@ public class RenderContext3D extends BaseRenderContext3D { glEnd(); } + @Override + public void clearDepth() { + glClear(GL_DEPTH_BUFFER_BIT); + } + @Override public void renderTriangle(Vec3f p1, Vec3f p2, Vec3f p3) { glBegin(GL_TRIANGLES); diff --git a/com/danitheskunk/skunkworks/gfx/threedee/IRenderContext3D.java b/com/danitheskunk/skunkworks/gfx/threedee/IRenderContext3D.java index f0bc8a1..c5b0375 100644 --- a/com/danitheskunk/skunkworks/gfx/threedee/IRenderContext3D.java +++ b/com/danitheskunk/skunkworks/gfx/threedee/IRenderContext3D.java @@ -7,4 +7,5 @@ public interface IRenderContext3D { void renderTriangle(Vec3f p1, Vec3f p2, Vec3f p3); void renderMesh(Mesh mesh); void renderMesh(Mesh mesh, Color tint); + void clearDepth(); }