Revision 950511ed
Added by Leszek Koltunski over 9 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