diff --git a/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTRenderer.java b/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTRenderer.java index da0bad2..24a4558 100644 --- a/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTRenderer.java +++ b/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTRenderer.java @@ -2,10 +2,13 @@ import android.opengl.GLSurfaceView.Renderer; +import com.google.ar.core.Session; +import com.google.ar.core.examples.java.common.framework.model3D.Universe; import com.google.ar.core.examples.java.common.framework.view3D.Camera3D; import com.google.ar.core.examples.java.common.framework.view3D.Viewer3D; import com.google.ar.core.examples.java.common.java3d.GraphicsContext3D; import com.google.ar.core.examples.java.common.java3d.Light; +import com.google.ar.core.examples.java.helloar.HelloArActivity; import java.util.ArrayList; @@ -14,54 +17,64 @@ public class RWTRenderer implements Renderer { protected Viewer3D viewer; - protected Camera3D camera; + protected Session session; + protected HelloArActivity helloArActivity; + protected Universe universe; protected GraphicsContext3D gc3D = null; - public RWTRenderer() { + public RWTRenderer(Session session, HelloArActivity helloArActivity) { super(); + this.session = session; + this.helloArActivity = helloArActivity; } - public void attachCamera(Camera3D camera) { - // onSurfaceCreated()より先に呼ばれる - this.camera = camera; - viewer = new Viewer3D(camera); - } +// public void attachCamera(Camera3D camera) { +// // onSurfaceCreated()より先に呼ばれる +// this.camera = camera; +// viewer = new Viewer3D(camera); +// } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { - gc3D = new GraphicsContext3D(gl); - ArrayList lights = camera.getUniverse().getLights(); - for (int i = 0; i < lights.size(); i++){ - Light l = lights.get(i); - gc3D.setLight(l,i); - } - viewer.setGraphicsContext3D(gc3D); +// gc3D = new GraphicsContext3D(gl); +// ArrayList lights = camera.getUniverse().getLights(); +// for (int i = 0; i < lights.size(); i++){ +// Light l = lights.get(i); +// gc3D.setLight(l,i); +// } +// viewer.setGraphicsContext3D(gc3D); + + helloArActivity.onSurfaceCreated(gl, config); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { - if (gc3D == null) { - gc3D = new GraphicsContext3D(gl); - viewer.setGraphicsContext3D(gc3D); - } else { - viewer.setGraphicsContext3D(gc3D.setGL10(gl)); - } - viewer.surfaceChanged(width, height); +// if (gc3D == null) { +// gc3D = new GraphicsContext3D(gl); +// viewer.setGraphicsContext3D(gc3D); +// } else { +// viewer.setGraphicsContext3D(gc3D.setGL10(gl)); +// } +// viewer.surfaceChanged(width, height); + + helloArActivity.onSurfaceChanged(gl, width, height); } @Override public void onDrawFrame(GL10 gl) { - if (gc3D == null) { - gc3D = new GraphicsContext3D(gl); - viewer.setGraphicsContext3D(gc3D); - } else { - viewer.setGraphicsContext3D(gc3D.setGL10(gl)); - } - viewer.onDrawFrame(); +// if (gc3D == null) { +// gc3D = new GraphicsContext3D(gl); +// viewer.setGraphicsContext3D(gc3D); +// } else { +// viewer.setGraphicsContext3D(gc3D.setGL10(gl)); +// } +// viewer.onDrawFrame(); +// +// // 3Dモデルのレンダリング +// gc3D.pushMatrix(); +// universe.render(viewer); +// gc3D.popMatrix(); - // 3Dモデルのレンダリング - gc3D.pushMatrix(); - camera.getUniverse().render(viewer); - gc3D.popMatrix(); + helloArActivity.onDrawFrame(gl); } } diff --git a/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTSurfaceView.java b/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTSurfaceView.java index 3a03681..6ef57bc 100644 --- a/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTSurfaceView.java +++ b/app/src/main/java/com/google/ar/core/examples/java/common/framework/RWT/RWTSurfaceView.java @@ -20,8 +20,8 @@ renderer = (Renderer) context; } - setEGLConfigChooser(8, 8, 8, 8, 16, 0); - this.setRenderer(renderer); +// setEGLConfigChooser(8, 8, 8, 8, 16, 0); +// this.setRenderer(renderer); } } diff --git a/app/src/main/java/com/google/ar/core/examples/java/common/framework/view3D/Viewer3D.java b/app/src/main/java/com/google/ar/core/examples/java/common/framework/view3D/Viewer3D.java index 56eb70b..0fc7f64 100644 --- a/app/src/main/java/com/google/ar/core/examples/java/common/framework/view3D/Viewer3D.java +++ b/app/src/main/java/com/google/ar/core/examples/java/common/framework/view3D/Viewer3D.java @@ -1,5 +1,6 @@ package com.google.ar.core.examples.java.common.framework.view3D; +import com.google.ar.core.Camera; import com.google.ar.core.examples.java.common.framework.model3D.BackgroundBox; import com.google.ar.core.examples.java.common.framework.model3D.IViewer3D; import com.google.ar.core.examples.java.common.framework.model3D.Position3D; @@ -20,9 +21,10 @@ private GraphicsContext3D gc3D = null; private ArrayList lights = null; private BackgroundBox skyBox = null; - private Camera3D camera = null; +// private Camera3D camera = null; + private Camera camera = null; - public Viewer3D(Camera3D camera) { + public Viewer3D(Camera camera) { this.camera = camera; } @@ -35,15 +37,15 @@ @Override public void surfaceChanged(int width, int height) { - gc3D.update(width, height, (float)camera.getFieldOfView(), (float)camera.getFrontClipDistance(), (float)camera.getBackClipDistance(), camera.isParallel()); +// gc3D.update(width, height, (float)camera.getFieldOfView(), (float)camera.getFrontClipDistance(), (float)camera.getBackClipDistance(), camera.isParallel()); } @Override public void onDrawFrame() { - Position3D eye = camera.getViewPoint(); - Position3D center = eye.clone().add(camera.getViewLine()); - Vector3d up = camera.getViewUp(); - gc3D.update((float)camera.getFieldOfView(), (float)camera.getFrontClipDistance(), (float)camera.getBackClipDistance(), eye, center, up, camera.isParallel()); +// Position3D eye = camera.getViewPoint(); +// Position3D center = eye.clone().add(camera.getViewLine()); +// Vector3d up = camera.getViewUp(); +// gc3D.update((float)camera.getFieldOfView(), (float)camera.getFrontClipDistance(), (float)camera.getBackClipDistance(), eye, center, up, camera.isParallel()); } @Override diff --git a/app/src/main/java/com/google/ar/core/examples/java/helloar/HelloArActivity.java b/app/src/main/java/com/google/ar/core/examples/java/helloar/HelloArActivity.java index 57fe08d..e2f634e 100644 --- a/app/src/main/java/com/google/ar/core/examples/java/helloar/HelloArActivity.java +++ b/app/src/main/java/com/google/ar/core/examples/java/helloar/HelloArActivity.java @@ -35,7 +35,7 @@ import com.google.ar.core.Session; import com.google.ar.core.Trackable; import com.google.ar.core.TrackingState; -import com.google.ar.core.examples.java.common.framework.RWT.RWTSurfaceView; +import com.google.ar.core.examples.java.common.framework.RWT.RWTRenderer; import com.google.ar.core.examples.java.common.helpers.CameraPermissionHelper; import com.google.ar.core.examples.java.common.helpers.DisplayRotationHelper; import com.google.ar.core.examples.java.common.helpers.FullScreenHelper; @@ -68,6 +68,7 @@ // Rendering. The Renderers are created here, and initialized when the GL surface is created. private GLSurfaceView surfaceView; + private RWTRenderer renderer; private boolean installRequested; @@ -107,6 +108,7 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = findViewById(R.id.surfaceview); + renderer = new RWTRenderer(session, this); displayRotationHelper = new DisplayRotationHelper(/*context=*/ this); // Set up tap listener. @@ -239,6 +241,8 @@ virtualObjectShadow.setBlendMode(BlendMode.Shadow); virtualObjectShadow.setMaterialProperties(1.0f, 0.0f, 0.0f, 1.0f); +// renderer.onSurfaceCreated(gl, config); + } catch (IOException e) { Log.e(TAG, "Failed to read an asset file", e); } @@ -248,6 +252,8 @@ public void onSurfaceChanged(GL10 gl, int width, int height) { displayRotationHelper.onSurfaceChanged(width, height); GLES20.glViewport(0, 0, width, height); + +// renderer.onSurfaceChanged(gl, width, height); } @Override @@ -335,6 +341,8 @@ virtualObjectShadow.updateModelMatrix(anchorMatrix, scaleFactor); virtualObject.draw(viewmtx, projmtx, colorCorrectionRgba, coloredAnchor.color); virtualObjectShadow.draw(viewmtx, projmtx, colorCorrectionRgba, coloredAnchor.color); + + renderer.onDrawFrame(gl); } } catch (Throwable t) {