Revision d2337a3a
Added by Leszek Koltunski over 9 years ago
| src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java | ||
|---|---|---|
| 221 | 221 |
sinkA = 50; |
| 222 | 222 |
swirlA = 50; |
| 223 | 223 |
|
| 224 |
centerX = 25;
|
|
| 225 |
centerY = 25;
|
|
| 224 |
centerX = 50;
|
|
| 225 |
centerY = 50;
|
|
| 226 | 226 |
|
| 227 | 227 |
textCenter = (TextView)findViewById(R.id.vertex3dcenterText); |
| 228 |
computeCenter(); |
|
| 228 | 229 |
setCenterText(); |
| 229 | 230 |
|
| 230 | 231 |
setBar(R.id.vertex3dcenterX, centerX); |
| ... | ... | |
| 279 | 280 |
|
| 280 | 281 |
setBar(R.id.vertex3dswirlBar1, swirlA); |
| 281 | 282 |
|
| 282 |
Vertex3DRenderer.setOrder(effects); |
|
| 283 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 284 |
view.getRenderer().setOrder(effects); |
|
| 283 | 285 |
} |
| 284 | 286 |
|
| 285 | 287 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 355 | 357 |
|
| 356 | 358 |
private void computeDeform() |
| 357 | 359 |
{
|
| 358 |
fdeformX = (deformX-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 359 |
fdeformY = (deformY-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 360 |
fdeformZ = (deformZ-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 360 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 361 |
Vertex3DRenderer renderer = view.getRenderer(); |
|
| 361 | 362 |
|
| 362 |
Vertex3DRenderer.setDeform( fdeformX, fdeformY, fdeformZ ); |
|
| 363 |
fdeformX = (deformX-50)*renderer.mScreenMin/200.0f; |
|
| 364 |
fdeformY = (deformY-50)*renderer.mScreenMin/200.0f; |
|
| 365 |
fdeformZ = (deformZ-50)*renderer.mScreenMin/200.0f; |
|
| 366 |
|
|
| 367 |
renderer.setDeform( fdeformX, fdeformY, fdeformZ ); |
|
| 363 | 368 |
} |
| 364 | 369 |
|
| 365 | 370 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 377 | 382 |
|
| 378 | 383 |
private void computeDistort() |
| 379 | 384 |
{
|
| 380 |
fdistortX = (distortX-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 381 |
fdistortY = (distortY-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 382 |
fdistortZ = (distortZ-50)*Vertex3DRenderer.mScreenMin/50.0f; |
|
| 385 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 386 |
Vertex3DRenderer renderer = view.getRenderer(); |
|
| 387 |
|
|
| 388 |
fdistortX = (distortX-50)*renderer.mScreenMin/200.0f; |
|
| 389 |
fdistortY = (distortY-50)*renderer.mScreenMin/200.0f; |
|
| 390 |
fdistortZ = (distortZ-50)*renderer.mScreenMin/200.0f; |
|
| 383 | 391 |
|
| 384 |
Vertex3DRenderer.setDistort(fdistortX, fdistortY, fdistortZ);
|
|
| 392 |
renderer.setDistort(fdistortX, fdistortY, fdistortZ);
|
|
| 385 | 393 |
} |
| 386 | 394 |
|
| 387 | 395 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 399 | 407 |
|
| 400 | 408 |
private void computeSink() |
| 401 | 409 |
{
|
| 410 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 411 |
|
|
| 402 | 412 |
fsinkA = (sinkA>= 50 ? 0.18f*sinkA-8.0f : 0.018f*sinkA + 0.1f); |
| 403 | 413 |
|
| 404 |
Vertex3DRenderer.setSink( fsinkA );
|
|
| 414 |
view.getRenderer().setSink( fsinkA );
|
|
| 405 | 415 |
} |
| 406 | 416 |
|
| 407 | 417 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 417 | 427 |
|
| 418 | 428 |
private void computeSwirl() |
| 419 | 429 |
{
|
| 430 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 431 |
|
|
| 420 | 432 |
fswirlA = (swirlA-50)*3.6f; |
| 421 | 433 |
|
| 422 |
Vertex3DRenderer.setSwirl( fswirlA );
|
|
| 434 |
view.getRenderer().setSwirl( fswirlA );
|
|
| 423 | 435 |
} |
| 424 | 436 |
|
| 425 | 437 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 435 | 447 |
|
| 436 | 448 |
private void computeCenter() |
| 437 | 449 |
{
|
| 438 |
fcenterX = (centerX*0.02f - 0.5f)*Vertex3DRenderer.SIZE; |
|
| 439 |
fcenterY = (centerY*0.02f - 0.5f)*Vertex3DRenderer.SIZE; |
|
| 450 |
Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView); |
|
| 440 | 451 |
|
| 441 |
Vertex3DRenderer.setCenter( fcenterX, fcenterY ); |
|
| 452 |
fcenterX = centerX; |
|
| 453 |
fcenterY = centerY; |
|
| 454 |
|
|
| 455 |
view.getRenderer().setCenter( fcenterX, fcenterY ); |
|
| 442 | 456 |
} |
| 443 | 457 |
|
| 444 | 458 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 451 | 465 |
textCenter.setText("center("+fcenterX+","+fcenterY+")");
|
| 452 | 466 |
} |
| 453 | 467 |
|
| 468 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 469 |
|
|
| 470 |
public float getCenterX() |
|
| 471 |
{
|
|
| 472 |
return fcenterX; |
|
| 473 |
} |
|
| 474 |
|
|
| 475 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 476 |
|
|
| 477 |
public float getCenterY() |
|
| 478 |
{
|
|
| 479 |
return fcenterY; |
|
| 480 |
} |
|
| 481 |
|
|
| 454 | 482 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 455 | 483 |
// Overrides |
| 456 | 484 |
|
| src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java | ||
|---|---|---|
| 50 | 50 |
|
| 51 | 51 |
class Vertex3DRenderer implements GLSurfaceView.Renderer |
| 52 | 52 |
{
|
| 53 |
public static final int SIZE = 100;
|
|
| 53 |
private static final int SIZE = 100;
|
|
| 54 | 54 |
|
| 55 | 55 |
private GLSurfaceView mView; |
| 56 |
private static DistortedObject mObject;
|
|
| 56 |
private DistortedObject mObject; |
|
| 57 | 57 |
private DistortedBitmap mCenter; |
| 58 |
private int mCols;
|
|
| 58 |
private float mFactorCen, mFactorObj;
|
|
| 59 | 59 |
|
| 60 | 60 |
private int mObjWidth, mObjHeight; |
| 61 | 61 |
|
| 62 | 62 |
private DynamicQuat mQuatInt1, mQuatInt2; |
| 63 | 63 |
|
| 64 |
private static EffectNames[] order;
|
|
| 64 |
private EffectNames[] order; |
|
| 65 | 65 |
|
| 66 |
private static Dynamic2D mCenterInter;
|
|
| 67 |
private static Dynamic3D mDeformInter, mDistortInter, mMoveInter;
|
|
| 68 |
private static Dynamic1D mSinkInter, mSwirlInter;
|
|
| 66 |
private Dynamic2D mCenterInter; |
|
| 67 |
private Dynamic3D mDeformInter, mDistortInter, mMoveInter; |
|
| 68 |
private Dynamic1D mSinkInter, mSwirlInter; |
|
| 69 | 69 |
|
| 70 |
private static Static2D mCenterPoint;
|
|
| 71 |
private static Static3D mDeformPoint, mDistortPoint, mMovePoint;
|
|
| 72 |
private static Static1D mSinkPoint, mSwirlPoint;
|
|
| 70 |
private Static2D mCenterPoint; |
|
| 71 |
private Static3D mDeformPoint, mDistortPoint, mMovePoint; |
|
| 72 |
private Static1D mSinkPoint, mSwirlPoint; |
|
| 73 | 73 |
|
| 74 | 74 |
Static4D mQuat1, mQuat2; |
| 75 |
static int mScreenMin;
|
|
| 75 |
int mScreenMin; |
|
| 76 | 76 |
|
| 77 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 78 | 78 |
|
| 79 |
public static void setDeform(float x, float y, float z)
|
|
| 79 |
public void setDeform(float x, float y, float z) |
|
| 80 | 80 |
{
|
| 81 | 81 |
mDeformPoint.set(x, y, z); |
| 82 | 82 |
} |
| 83 | 83 |
|
| 84 | 84 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 85 | 85 |
|
| 86 |
public static void setDistort(float x, float y, float z)
|
|
| 86 |
public void setDistort(float x, float y, float z) |
|
| 87 | 87 |
{
|
| 88 | 88 |
mDistortPoint.set(x, y, z); |
| 89 | 89 |
} |
| 90 | 90 |
|
| 91 | 91 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 92 | 92 |
|
| 93 |
public static void setSink(float s)
|
|
| 93 |
public void setSink(float s) |
|
| 94 | 94 |
{
|
| 95 | 95 |
mSinkPoint.set(s); |
| 96 | 96 |
} |
| 97 | 97 |
|
| 98 | 98 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 99 | 99 |
|
| 100 |
public static void setSwirl(float s)
|
|
| 100 |
public void setSwirl(float s) |
|
| 101 | 101 |
{
|
| 102 | 102 |
mSwirlPoint.set(s); |
| 103 | 103 |
} |
| 104 | 104 |
|
| 105 | 105 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 106 | 106 |
|
| 107 |
public static void setCenter(float x, float y)
|
|
| 107 |
public void setCenter(float x, float y) |
|
| 108 | 108 |
{
|
| 109 |
x = (0.012f*x-0.1f)*mObjWidth; |
|
| 110 |
y = (0.012f*y-0.1f)*mObjHeight; |
|
| 111 |
|
|
| 109 | 112 |
mCenterPoint.set(x,y); |
| 110 |
mMovePoint.set(x,y,0);
|
|
| 113 |
mMovePoint.set(mFactorObj*x,mFactorObj*y,0);
|
|
| 111 | 114 |
} |
| 112 | 115 |
|
| 113 | 116 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 114 | 117 |
|
| 115 |
public static void setOrder(EffectNames[] effects)
|
|
| 118 |
public void setOrder(EffectNames[] effects) |
|
| 116 | 119 |
{
|
| 117 | 120 |
order = effects; |
| 118 | 121 |
setVertexEffects(); |
| ... | ... | |
| 120 | 123 |
|
| 121 | 124 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 122 | 125 |
|
| 123 |
public static void setVertexEffects()
|
|
| 126 |
public void setVertexEffects() |
|
| 124 | 127 |
{
|
| 125 | 128 |
mObject.abortEffects(EffectTypes.VERTEX); |
| 126 | 129 |
|
| ... | ... | |
| 142 | 145 |
{
|
| 143 | 146 |
mView = v; |
| 144 | 147 |
|
| 145 |
mCols = Vertex3DActivity.getCols(); |
|
| 146 |
|
|
| 147 |
mObject = new DistortedCubes( mCols, Vertex3DActivity.getShape(), SIZE); |
|
| 148 |
mObject = new DistortedCubes( Vertex3DActivity.getCols(), Vertex3DActivity.getShape(), SIZE); |
|
| 148 | 149 |
//mObject = new DistortedBitmap( SIZE, SIZE, 10); |
| 149 | 150 |
mCenter = new DistortedBitmap(SIZE, SIZE, 1); |
| 150 | 151 |
|
| ... | ... | |
| 204 | 205 |
mObject.abortEffects(EffectTypes.MATRIX); |
| 205 | 206 |
mCenter.abortEffects(EffectTypes.MATRIX); |
| 206 | 207 |
|
| 207 |
float factorObj;
|
|
| 208 |
int centerSize = mCenter.getWidth();
|
|
| 208 | 209 |
|
| 209 | 210 |
if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object |
| 210 | 211 |
{
|
| 211 |
factorObj = (0.7f*height)/mObjHeight; |
|
| 212 |
mFactorObj = (0.70f*height)/mObjHeight; |
|
| 213 |
mFactorCen = (0.15f*height)/centerSize; |
|
| 212 | 214 |
} |
| 213 | 215 |
else |
| 214 | 216 |
{
|
| 215 |
factorObj = (0.7f*width)/mObjWidth; |
|
| 217 |
mFactorObj = (0.70f*width)/mObjWidth; |
|
| 218 |
mFactorCen = (0.15f*width)/centerSize; |
|
| 216 | 219 |
} |
| 217 | 220 |
|
| 221 |
Vertex3DActivity act = (Vertex3DActivity)mView.getContext(); |
|
| 222 |
float cX = act.getCenterX(); |
|
| 223 |
float cY = act.getCenterY(); |
|
| 224 |
|
|
| 225 |
cX = (0.012f*cX-0.1f)*mObjWidth; |
|
| 226 |
cY = (0.012f*cY-0.1f)*mObjHeight; |
|
| 227 |
|
|
| 228 |
mMovePoint.set(cX*mFactorObj,cY*mFactorObj,0); |
|
| 229 |
|
|
| 218 | 230 |
Static3D rotateObj = new Static3D(mObjWidth/2,mObjHeight/2, 0); |
| 219 | 231 |
|
| 220 |
mObject.move( new Static3D( (width-factorObj*mObjWidth)/2 , (height-factorObj*mObjHeight)/2 , 0) );
|
|
| 221 |
mObject.scale(factorObj);
|
|
| 232 |
mObject.move( new Static3D( (width-mFactorObj*mObjWidth)/2 , (height-mFactorObj*mObjHeight)/2 , 0) );
|
|
| 233 |
mObject.scale(mFactorObj);
|
|
| 222 | 234 |
mObject.quaternion(mQuatInt1, rotateObj); |
| 223 | 235 |
mObject.quaternion(mQuatInt2, rotateObj); |
| 224 | 236 |
|
| 225 |
int centerSize = mCenter.getWidth(); |
|
| 226 | 237 |
Static3D rotateCen = new Static3D(width/2,height/2, 0); |
| 227 | 238 |
|
| 228 |
float factorCen = (float)(mCols*SIZE) / (5*centerSize); // make the 'center' bitmap 1/5 of the Object's width |
|
| 229 |
|
|
| 230 | 239 |
mCenter.quaternion(mQuatInt1, rotateCen); |
| 231 | 240 |
mCenter.quaternion(mQuatInt2, rotateCen); |
| 232 |
mCenter.move( new Static3D( (width -factorCen*centerSize-factorObj*mObjWidth )/2 ,
|
|
| 233 |
(height-factorCen*centerSize-factorObj*mObjHeight)/2 , 10) );
|
|
| 241 |
mCenter.move( new Static3D( (width -mFactorCen*centerSize-mFactorObj*mObjWidth )/2 ,
|
|
| 242 |
(height-mFactorCen*centerSize-mFactorObj*mObjHeight)/2 , 10) );
|
|
| 234 | 243 |
mCenter.move(mMoveInter); |
| 235 |
mCenter.scale(factorCen);
|
|
| 244 |
mCenter.scale(mFactorCen);
|
|
| 236 | 245 |
|
| 237 | 246 |
setVertexEffects(); |
| 238 | 247 |
|
| src/main/java/org/distorted/examples/vertex3d/Vertex3DSurfaceView.java | ||
|---|---|---|
| 53 | 53 |
} |
| 54 | 54 |
} |
| 55 | 55 |
|
| 56 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 57 |
|
|
| 58 |
public Vertex3DRenderer getRenderer() |
|
| 59 |
{
|
|
| 60 |
return mRenderer; |
|
| 61 |
} |
|
| 62 |
|
|
| 56 | 63 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 57 | 64 |
|
| 58 | 65 |
@Override |
Also available in: Unified diff
Progress with Vertex3D