Skip to content

Commit 25034dd

Browse files
committed
v3.0.3 - fixed normal / smooth features
1 parent 8dc172f commit 25034dd

File tree

16 files changed

+33621
-146
lines changed

16 files changed

+33621
-146
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ The application does not use any third party library.
1313
* Collada format (DAE): https://en.wikipedia.org/wiki/COLLADA
1414

1515

16-
News (03/09/2020)
16+
News (05/09/2020)
1717
=================
1818

19-
* New version released 3.0.2
19+
* New version released 3.0.3
2020
* Collada support for polygon with holes
2121
* Wavefront support for smoothing groups
2222
* New FPS counter (frames per second)
@@ -183,6 +183,9 @@ ChangeLog
183183

184184
(f) fixed, (i) improved, (n) new feature
185185

186+
- 3.0.3 (05/09/2020)
187+
- (f) smooth faces are not toggle featured - not all models should be smoothed
188+
- (f) fixed normal calculation - using high precision numbers
186189
- 3.0.2 (03/09/2020)
187190
- (f) setUniform4fv function had length zero - issue detected with Xiaomi Redmi 8
188191
- (f) gl_MaxVertexUniformVectors is apparently not working - "too many uniforms" - detected in Xiaomi Redmi 8
4.14 KB
Binary file not shown.

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
44
package="org.andresoviedo.dddmodel2"
5-
android:versionCode="26"
6-
android:versionName="3.0.2">
5+
android:versionCode="27"
6+
android:versionName="3.0.3">
77

88
<uses-sdk
99
tools:overrideLibrary="android.support.compat, android.arch.lifecycle" />

app/src/main/java/org/andresoviedo/app/model3D/view/ModelActivity.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,15 @@ protected void onCreate(Bundle savedInstanceState) {
9292
backgroundColor[3] = Float.parseFloat(backgroundColors[3]);
9393
}
9494
} catch (Exception ex) {
95-
Log.e("ModelActivity", "Error parsing activity parameters: "+ex.getMessage(), ex);
95+
Log.e("ModelActivity", "Error parsing activity parameters: " + ex.getMessage(), ex);
9696
}
9797

9898
}
9999

100100
handler = new Handler(getMainLooper());
101101

102102
// Create our 3D scenario
103-
Log.i("ModelActivity","Loading Scene...");
103+
Log.i("ModelActivity", "Loading Scene...");
104104
scene = new SceneLoader(this, paramUri, paramType, gLView);
105105
if (paramUri == null) {
106106
final LoaderTask task = new DemoLoaderTask(this, null, scene);
@@ -115,44 +115,44 @@ protected void onCreate(Bundle savedInstanceState) {
115115
}*/
116116

117117
try {
118-
Log.i("ModelActivity","Loading GLSurfaceView...");
118+
Log.i("ModelActivity", "Loading GLSurfaceView...");
119119
gLView = new ModelSurfaceView(this, backgroundColor, this.scene);
120120
gLView.addListener(this);
121121
setContentView(gLView);
122122
scene.setView(gLView);
123123
} catch (Exception e) {
124-
Log.e("ModelActivity",e.getMessage(),e);
125-
Toast.makeText(this, "Error loading OpenGL view:\n" +e.getMessage(), Toast.LENGTH_LONG).show();
124+
Log.e("ModelActivity", e.getMessage(), e);
125+
Toast.makeText(this, "Error loading OpenGL view:\n" + e.getMessage(), Toast.LENGTH_LONG).show();
126126
}
127127

128128
try {
129-
Log.i("ModelActivity","Loading TouchController...");
129+
Log.i("ModelActivity", "Loading TouchController...");
130130
touchController = new TouchController(this);
131131
touchController.addListener(this);
132132
} catch (Exception e) {
133-
Log.e("ModelActivity",e.getMessage(),e);
134-
Toast.makeText(this, "Error loading TouchController:\n" +e.getMessage(), Toast.LENGTH_LONG).show();
133+
Log.e("ModelActivity", e.getMessage(), e);
134+
Toast.makeText(this, "Error loading TouchController:\n" + e.getMessage(), Toast.LENGTH_LONG).show();
135135
}
136136

137137
try {
138-
Log.i("ModelActivity","Loading CollisionController...");
138+
Log.i("ModelActivity", "Loading CollisionController...");
139139
collisionController = new CollisionController(gLView, scene);
140140
collisionController.addListener(scene);
141141
touchController.addListener(collisionController);
142142
touchController.addListener(scene);
143-
}catch(Exception e){
144-
Log.e("ModelActivity",e.getMessage(),e);
145-
Toast.makeText(this, "Error loading CollisionController\n" +e.getMessage(), Toast.LENGTH_LONG).show();
143+
} catch (Exception e) {
144+
Log.e("ModelActivity", e.getMessage(), e);
145+
Toast.makeText(this, "Error loading CollisionController\n" + e.getMessage(), Toast.LENGTH_LONG).show();
146146
}
147147

148148
try {
149-
Log.i("ModelActivity","Loading CameraController...");
149+
Log.i("ModelActivity", "Loading CameraController...");
150150
cameraController = new CameraController(scene.getCamera());
151151
gLView.getModelRenderer().addListener(cameraController);
152152
touchController.addListener(cameraController);
153-
}catch (Exception e){
153+
} catch (Exception e) {
154154
Log.e("ModelActivity", e.getMessage(), e);
155-
Toast.makeText(this, "Error loading CameraController" +e.getMessage(), Toast.LENGTH_LONG).show();
155+
Toast.makeText(this, "Error loading CameraController" + e.getMessage(), Toast.LENGTH_LONG).show();
156156
}
157157

158158
try {
@@ -175,7 +175,7 @@ protected void onCreate(Bundle savedInstanceState) {
175175
// load model
176176
scene.init();
177177

178-
Log.i("ModelActivity","Finished loading");
178+
Log.i("ModelActivity", "Finished loading");
179179
}
180180

181181
/**
@@ -233,6 +233,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
233233
case R.id.model_toggle_animation:
234234
scene.toggleAnimation();
235235
break;
236+
case R.id.model_toggle_smooth:
237+
scene.toggleSmooth();
238+
break;
236239
case R.id.model_toggle_collision:
237240
scene.toggleCollision();
238241
break;
@@ -273,7 +276,7 @@ private void toggleImmersive() {
273276
} else {
274277
showSystemUI();
275278
}
276-
Toast.makeText(this, "Fullscreen " +this.immersiveMode, Toast.LENGTH_SHORT).show();
279+
Toast.makeText(this, "Fullscreen " + this.immersiveMode, Toast.LENGTH_SHORT).show();
277280
}
278281

279282
private void hideSystemUIDelayed() {
@@ -355,7 +358,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
355358
public boolean onEvent(EventObject event) {
356359
if (event instanceof ModelRenderer.ViewEvent) {
357360
ModelRenderer.ViewEvent viewEvent = (ModelRenderer.ViewEvent) event;
358-
if(viewEvent.getCode() == ModelRenderer.ViewEvent.Code.SURFACE_CHANGED) {
361+
if (viewEvent.getCode() == ModelRenderer.ViewEvent.Code.SURFACE_CHANGED) {
359362
touchController.setSize(viewEvent.getWidth(), viewEvent.getHeight());
360363
gLView.setTouchController(touchController);
361364

app/src/main/res/menu/model.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
android:orderInCategory="500"
2626
android:showAsAction="ifRoom"
2727
android:title="@string/toggle_animation"/>
28+
<item
29+
android:id="@+id/model_toggle_smooth"
30+
android:icon="@android:drawable/ic_menu_gallery"
31+
android:orderInCategory="600"
32+
android:showAsAction="ifRoom"
33+
android:title="Toggle Smooth"/>
2834
<item
2935
android:id="@+id/model_load_texture"
3036
android:icon="@android:drawable/ic_menu_gallery"

engine/src/main/java/org/andresoviedo/android_3d_model_engine/model/Object3DData.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import org.andresoviedo.android_3d_model_engine.collision.Octree;
88
import org.andresoviedo.android_3d_model_engine.drawer.RendererFactory;
9+
import org.andresoviedo.android_3d_model_engine.services.collada.entities.MeshData;
910
import org.andresoviedo.util.android.AndroidUtils;
1011
import org.andresoviedo.util.event.EventListener;
1112
import org.andresoviedo.util.io.IOUtils;
@@ -66,6 +67,9 @@ protected static class ChangeEvent extends EventObject {
6667
*/
6768
private int drawMode = GLES20.GL_POINTS;
6869

70+
// mesh vertex data
71+
private MeshData meshData = null;
72+
6973
// Model data
7074
protected FloatBuffer vertexBuffer = null;
7175
private FloatBuffer normalsBuffer = null;
@@ -138,6 +142,14 @@ protected static class ChangeEvent extends EventObject {
138142
public Object3DData() {
139143
}
140144

145+
public void setMeshData(MeshData meshData) {
146+
this.meshData = meshData;
147+
}
148+
149+
public MeshData getMeshData() {
150+
return meshData;
151+
}
152+
141153
public Object3DData(FloatBuffer vertexBuffer) {
142154
this.vertexBuffer = vertexBuffer;
143155
this.setDrawUsingArrays(true);

0 commit comments

Comments
 (0)