Revision 950511ed
Added by Leszek Koltunski over 8 years ago
src/main/java/org/distorted/examples/fragment3d/Fragment3DActivity.java | ||
---|---|---|
374 | 374 |
LinearLayout layout = (LinearLayout)findViewById(R.id.fragment3dlayout); |
375 | 375 |
layout.removeAllViews(); |
376 | 376 |
mObject.abortEffects(EffectTypes.FRAGMENT); |
377 |
|
|
378 |
Fragment3DSurfaceView view = (Fragment3DSurfaceView)findViewById(R.id.fragment3dSurfaceView); |
|
379 |
Fragment3DRenderer renderer= view.getRenderer(); |
|
380 |
|
|
381 |
renderer.mQuat1.set(0,0,0,1); |
|
382 |
renderer.mQuat2.set(0,0,0,1); |
|
377 | 383 |
} |
378 | 384 |
|
379 | 385 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java | ||
---|---|---|
69 | 69 |
|
70 | 70 |
private ArrayList<Vertex3DEffect> mEffects; |
71 | 71 |
private int mEffectAdd; |
72 |
private float mCenterX, mCenterY; |
|
72 | 73 |
|
73 | 74 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
74 | 75 |
|
... | ... | |
200 | 201 |
tmp.setBackgroundColor(mShape[id] ? COLOR_ON:COLOR_OFF); |
201 | 202 |
} |
202 | 203 |
|
204 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
205 |
|
|
206 |
public void setCenter(float x, float y) |
|
207 |
{ |
|
208 |
mCenterX = x; |
|
209 |
mCenterY = y; |
|
210 |
|
|
211 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
212 |
|
|
213 |
view.getRenderer().setCenter( mCenterX, mCenterY ); |
|
214 |
} |
|
215 |
|
|
216 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
217 |
|
|
218 |
public float getCenterX() |
|
219 |
{ |
|
220 |
return mCenterX; |
|
221 |
} |
|
222 |
|
|
223 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
224 |
|
|
225 |
public float getCenterY() |
|
226 |
{ |
|
227 |
return mCenterY; |
|
228 |
} |
|
229 |
|
|
203 | 230 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
204 | 231 |
|
205 | 232 |
public void Continue(View v) |
... | ... | |
289 | 316 |
|
290 | 317 |
private void setVertexView() |
291 | 318 |
{ |
319 |
mCenterX = 0.5f*getWidth(); |
|
320 |
mCenterY = 0.5f*getHeight(); |
|
321 |
|
|
292 | 322 |
final View view = getLayoutInflater().inflate(R.layout.vertex3dlayout, null); |
293 | 323 |
|
294 | 324 |
setContentView(view); |
... | ... | |
329 | 359 |
LinearLayout layout = (LinearLayout)findViewById(R.id.vertex3dlayout); |
330 | 360 |
View view = eff.createView(); |
331 | 361 |
layout.addView(view); |
362 |
|
|
363 |
if( mEffectAdd!=1 ) // deform does not support regions |
|
364 |
{ |
|
365 |
View region = eff.createRegion(); |
|
366 |
layout.addView(region); |
|
367 |
} |
|
368 |
|
|
332 | 369 |
View center = eff.createCenter(); |
333 | 370 |
layout.addView(center); |
334 |
View region = eff.createRegion(); |
|
335 |
layout.addView(region); |
|
336 | 371 |
|
337 | 372 |
Dynamic1D dyn1 = eff.getDyn1(); |
338 | 373 |
Dynamic2D cent = eff.getCenter(); |
... | ... | |
356 | 391 |
LinearLayout layout = (LinearLayout)findViewById(R.id.vertex3dlayout); |
357 | 392 |
layout.removeAllViews(); |
358 | 393 |
mObject.abortEffects(EffectTypes.VERTEX); |
394 |
|
|
395 |
mCenterX = 0.5f*getWidth(); |
|
396 |
mCenterY = 0.5f*getHeight(); |
|
397 |
|
|
398 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
399 |
Vertex3DRenderer renderer= view.getRenderer(); |
|
400 |
|
|
401 |
renderer.setCenter( mCenterX, mCenterY ); |
|
402 |
renderer.mQuat1.set(0,0,0,1); |
|
403 |
renderer.mQuat2.set(0,0,0,1); |
|
359 | 404 |
} |
360 | 405 |
|
361 | 406 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/vertex3d/Vertex3DEffect.java | ||
---|---|---|
67 | 67 |
{ |
68 | 68 |
Vertex3DActivity act = mAct.get(); |
69 | 69 |
|
70 |
float x = (mInterCenter[0]*0.014f - 0.2f)*act.getWidth();
|
|
71 |
float y = (mInterCenter[1]*0.014f - 0.2f)*act.getHeight();
|
|
70 |
float x = (mInterCenter[0]*0.012f - 0.1f)*act.getWidth();
|
|
71 |
float y = (mInterCenter[1]*0.012f - 0.1f)*act.getHeight();
|
|
72 | 72 |
mCenterSta.set(x,y); |
73 |
|
|
74 |
act.setCenter(x,y); |
|
73 | 75 |
} |
74 | 76 |
|
75 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
449 | 451 |
fillCenterStatics(); |
450 | 452 |
setCenterText(); |
451 | 453 |
} |
454 |
|
|
455 |
mAct.get().setCenter(mCenterSta.getX(),mCenterSta.getY()); |
|
452 | 456 |
} |
453 | 457 |
|
454 | 458 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java | ||
---|---|---|
29 | 29 |
import org.distorted.library.DistortedBitmap; |
30 | 30 |
import org.distorted.library.DistortedObject; |
31 | 31 |
import org.distorted.library.EffectTypes; |
32 |
import org.distorted.library.type.Dynamic3D; |
|
32 | 33 |
import org.distorted.library.type.DynamicQuat; |
33 | 34 |
import org.distorted.library.type.Static3D; |
34 | 35 |
import org.distorted.library.type.Static4D; |
... | ... | |
46 | 47 |
private GLSurfaceView mView; |
47 | 48 |
private DistortedObject mObject; |
48 | 49 |
private DistortedBitmap mBackground; |
50 |
private DistortedBitmap mCenter; |
|
49 | 51 |
private int mObjWidth, mObjHeight; |
50 | 52 |
private DynamicQuat mQuatInt1, mQuatInt2; |
53 |
|
|
54 |
private Dynamic3D mMoveInter; |
|
55 |
private Static3D mMovePoint; |
|
56 |
private float mFactorObj; |
|
57 |
|
|
51 | 58 |
Static4D mQuat1, mQuat2; |
52 | 59 |
int mScreenMin; |
53 | 60 |
|
61 |
|
|
54 | 62 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
55 | 63 |
|
56 | 64 |
public Vertex3DRenderer(GLSurfaceView v) |
... | ... | |
59 | 67 |
|
60 | 68 |
mObject = ((Vertex3DActivity)v.getContext()).getObject(); |
61 | 69 |
mBackground = new DistortedBitmap(100, 100, 1); |
70 |
mCenter = new DistortedBitmap(100, 100, 1); |
|
62 | 71 |
|
63 | 72 |
mObjWidth = mObject.getWidth(); |
64 | 73 |
mObjHeight= mObject.getHeight(); |
... | ... | |
71 | 80 |
|
72 | 81 |
mQuatInt1.add(mQuat1); |
73 | 82 |
mQuatInt2.add(mQuat2); |
83 |
|
|
84 |
mMovePoint= new Static3D(0,0,0); |
|
85 |
mMoveInter= new Dynamic3D(); |
|
86 |
mMoveInter.add(mMovePoint); |
|
87 |
} |
|
88 |
|
|
89 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
90 |
|
|
91 |
public void setCenter(float x, float y) |
|
92 |
{ |
|
93 |
mMovePoint.set(mFactorObj*x,mFactorObj*y,0); |
|
74 | 94 |
} |
75 | 95 |
|
76 | 96 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
84 | 104 |
|
85 | 105 |
mBackground.draw(time); |
86 | 106 |
mObject.draw(time); |
107 |
mCenter.draw(time); |
|
87 | 108 |
} |
88 | 109 |
|
89 | 110 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
94 | 115 |
|
95 | 116 |
mObject.abortEffects(EffectTypes.MATRIX); |
96 | 117 |
mBackground.abortEffects(EffectTypes.MATRIX); |
97 |
float factorObj; |
|
118 |
mCenter.abortEffects(EffectTypes.MATRIX); |
|
119 |
|
|
120 |
float factorCen; |
|
121 |
int centerSize = mCenter.getWidth(); |
|
98 | 122 |
|
99 | 123 |
if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object |
100 | 124 |
{ |
101 |
factorObj = (0.80f*height)/mObjHeight; |
|
125 |
mFactorObj = (0.80f*height)/mObjHeight; |
|
126 |
factorCen = (0.08f*height)/centerSize; |
|
102 | 127 |
} |
103 | 128 |
else |
104 | 129 |
{ |
105 |
factorObj = (0.80f*width)/mObjWidth; |
|
130 |
mFactorObj = (0.80f*width)/mObjWidth; |
|
131 |
factorCen = (0.08f*width)/centerSize; |
|
106 | 132 |
} |
107 | 133 |
|
134 |
Vertex3DActivity act = (Vertex3DActivity)mView.getContext(); |
|
135 |
mMovePoint.set(mFactorObj*act.getCenterX(),mFactorObj*act.getCenterY(),0); |
|
136 |
|
|
108 | 137 |
Static3D rotateObj = new Static3D(mObjWidth/2,mObjHeight/2, 0); |
109 | 138 |
|
110 |
mObject.move( new Static3D( (width-factorObj*mObjWidth)/2 , (height-factorObj*mObjHeight)/2 , 0) );
|
|
111 |
mObject.scale(factorObj);
|
|
139 |
mObject.move( new Static3D( (width-mFactorObj*mObjWidth)/2 , (height-mFactorObj*mObjHeight)/2 , 0) );
|
|
140 |
mObject.scale(mFactorObj);
|
|
112 | 141 |
mObject.quaternion(mQuatInt1, rotateObj); |
113 | 142 |
mObject.quaternion(mQuatInt2, rotateObj); |
114 | 143 |
|
144 |
Static3D rotateCen = new Static3D(width/2,height/2, 0); |
|
145 |
|
|
146 |
mCenter.quaternion(mQuatInt1, rotateCen); |
|
147 |
mCenter.quaternion(mQuatInt2, rotateCen); |
|
148 |
|
|
149 |
mCenter.move( new Static3D( (width -factorCen*centerSize-mFactorObj*mObjWidth )/2 , |
|
150 |
(height-factorCen*centerSize-mFactorObj*mObjHeight)/2 , 10) ); |
|
151 |
mCenter.move(mMoveInter); |
|
152 |
mCenter.scale(factorCen); |
|
153 |
|
|
115 | 154 |
int backgroundSize = mBackground.getWidth(); |
116 | 155 |
float factorBackX = ((float)width)/backgroundSize; |
117 | 156 |
float factorBackY = ((float)height)/backgroundSize; |
118 | 157 |
|
119 |
mBackground.move(new Static3D( -width/2, -height/2,-factorObj*(mObjWidth+mObjHeight)/2) );
|
|
158 |
mBackground.move(new Static3D( -width/2, -height/2,-mFactorObj*(mObjWidth+mObjHeight)/2) );
|
|
120 | 159 |
mBackground.scale(new Static3D(2*factorBackX, 2*factorBackY, 1.0f) ); |
121 | 160 |
|
122 | 161 |
Distorted.onSurfaceChanged(width, height); |
... | ... | |
130 | 169 |
|
131 | 170 |
InputStream is1 = act.getResources().openRawResource(act.getBitmap()); |
132 | 171 |
InputStream is2 = act.getResources().openRawResource(R.raw.water); |
172 |
InputStream is3 = act.getResources().openRawResource(R.raw.center); |
|
133 | 173 |
|
134 |
Bitmap bitmap1,bitmap2; |
|
174 |
Bitmap bitmap1,bitmap2,bitmap3;
|
|
135 | 175 |
|
136 | 176 |
try |
137 | 177 |
{ |
138 | 178 |
bitmap1 = BitmapFactory.decodeStream(is1); |
139 | 179 |
bitmap2 = BitmapFactory.decodeStream(is2); |
180 |
bitmap3 = BitmapFactory.decodeStream(is3); |
|
140 | 181 |
} |
141 | 182 |
finally |
142 | 183 |
{ |
... | ... | |
144 | 185 |
{ |
145 | 186 |
is1.close(); |
146 | 187 |
is2.close(); |
188 |
is3.close(); |
|
147 | 189 |
} |
148 | 190 |
catch(IOException e) { } |
149 | 191 |
} |
150 | 192 |
|
151 | 193 |
mObject.setBitmap(bitmap1); |
152 |
mBackground.setBitmap(bitmap2) |
|
153 |
; |
|
194 |
mBackground.setBitmap(bitmap2); |
|
195 |
mCenter.setBitmap(bitmap3); |
|
196 |
|
|
154 | 197 |
try |
155 | 198 |
{ |
156 | 199 |
Distorted.onSurfaceCreated(mView.getContext()); |
src/main/res/layout/effectcenter.xml | ||
---|---|---|
39 | 39 |
|
40 | 40 |
</LinearLayout> |
41 | 41 |
|
42 |
<View |
|
43 |
android:layout_height="3dip" |
|
44 |
android:background="#777777" |
|
45 |
android:layout_width="match_parent" |
|
46 |
/> |
|
47 |
|
|
42 | 48 |
</LinearLayout> |
src/main/res/layout/effectregion.xml | ||
---|---|---|
64 | 64 |
|
65 | 65 |
</LinearLayout> |
66 | 66 |
|
67 |
|
|
68 |
<View |
|
69 |
android:layout_height="3dip" |
|
70 |
android:background="#777777" |
|
71 |
android:layout_width="match_parent" |
|
72 |
/> |
|
73 |
|
|
74 | 67 |
</LinearLayout> |
Also available in: Unified diff
re-add center to Vertex3D