Revision 2bf60c29
Added by Leszek Koltunski over 9 years ago
| src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java | ||
|---|---|---|
| 55 | 55 | private GLSurfaceView mView; | 
| 56 | 56 | private static DistortedObject mObject; | 
| 57 | 57 | private DistortedBitmap mCenter; | 
| 58 | private int mCols; | |
| 58 | 59 |  | 
| 59 | 60 | private int mObjWidth, mObjHeight; | 
| 60 | 61 |  | 
| ... | ... | |
| 63 | 64 | private static EffectNames[] order; | 
| 64 | 65 |  | 
| 65 | 66 | private static Dynamic2D mCenterInter; | 
| 66 | private static Dynamic3D mDeformInter, mDistortInter; | |
| 67 |     private static Dynamic3D mDeformInter, mDistortInter, mMoveInter;
 | |
| 67 | 68 | private static Dynamic1D mSinkInter, mSwirlInter; | 
| 68 | 69 |  | 
| 69 | 70 | private static Static2D mCenterPoint; | 
| 70 | private static Static3D mDeformPoint, mDistortPoint; | |
| 71 |     private static Static3D mDeformPoint, mDistortPoint, mMovePoint;
 | |
| 71 | 72 | private static Static1D mSinkPoint, mSwirlPoint; | 
| 72 | 73 |  | 
| 73 | 74 | Static4D mQuat1, mQuat2; | 
| ... | ... | |
| 106 | 107 | public static void setCenter(float x, float y) | 
| 107 | 108 |       {
 | 
| 108 | 109 | mCenterPoint.set(x,y); | 
| 110 | mMovePoint.set(x,y,0); | |
| 109 | 111 | } | 
| 110 | 112 |  | 
| 111 | 113 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| ... | ... | |
| 140 | 142 |       {
 | 
| 141 | 143 | mView = v; | 
| 142 | 144 |  | 
| 143 | mObject = new DistortedCubes( Vertex3DActivity.getCols(), Vertex3DActivity.getShape(), SIZE); | |
| 145 | mCols = Vertex3DActivity.getCols(); | |
| 146 |  | |
| 147 | mObject = new DistortedCubes( mCols, Vertex3DActivity.getShape(), SIZE); | |
| 144 | 148 | //mObject = new DistortedBitmap( SIZE, SIZE, 10); | 
| 145 | 149 | mCenter = new DistortedBitmap(SIZE, SIZE, 1); | 
| 146 | 150 |  | 
| ... | ... | |
| 148 | 152 | mObjHeight= mObject.getHeight(); | 
| 149 | 153 |  | 
| 150 | 154 | mCenterPoint = new Static2D(0,0); | 
| 155 | mMovePoint = new Static3D(0,0,0); | |
| 151 | 156 | mDeformPoint = new Static3D(0,0,0); | 
| 152 | 157 | mDistortPoint= new Static3D(1,1,1); | 
| 153 | 158 | mSwirlPoint = new Static1D(0); | 
| ... | ... | |
| 156 | 161 | mCenterInter = new Dynamic2D(); | 
| 157 | 162 | mDeformInter = new Dynamic3D(); | 
| 158 | 163 | mDistortInter = new Dynamic3D(); | 
| 164 | mMoveInter = new Dynamic3D(); | |
| 159 | 165 | mSwirlInter = new Dynamic1D(); | 
| 160 | 166 | mSinkInter = new Dynamic1D(); | 
| 161 | 167 |  | 
| 162 | 168 | mCenterInter.add(mCenterPoint); | 
| 169 | mMoveInter.add(mMovePoint); | |
| 163 | 170 | mDeformInter.add(mDeformPoint); | 
| 164 | 171 | mDistortInter.add(mDistortPoint); | 
| 165 | 172 | mSwirlInter.add(mSwirlPoint); | 
| ... | ... | |
| 197 | 204 | mObject.abortEffects(EffectTypes.MATRIX); | 
| 198 | 205 | mCenter.abortEffects(EffectTypes.MATRIX); | 
| 199 | 206 |  | 
| 200 | float factor; | |
| 207 |       float factorObj;
 | |
| 201 | 208 |  | 
| 202 | 209 | if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object | 
| 203 | 210 |         {
 | 
| 204 | factor = (0.7f*height)/mObjHeight; | |
| 211 |         factorObj = (0.7f*height)/mObjHeight;
 | |
| 205 | 212 | } | 
| 206 | 213 | else | 
| 207 | 214 |         {
 | 
| 208 | factor = (0.7f*width)/mObjWidth; | |
| 215 |         factorObj = (0.7f*width)/mObjWidth;
 | |
| 209 | 216 | } | 
| 210 | 217 |  | 
| 211 | Static3D center = new Static3D(mObjWidth/2,mObjHeight/2, 0); | |
| 218 | Static3D rotateObj = new Static3D(mObjWidth/2,mObjHeight/2, 0); | |
| 219 |  | |
| 220 | mObject.move( new Static3D( (width-factorObj*mObjWidth)/2 , (height-factorObj*mObjHeight)/2 , 0) ); | |
| 221 | mObject.scale(factorObj); | |
| 222 | mObject.quaternion(mQuatInt1, rotateObj); | |
| 223 | mObject.quaternion(mQuatInt2, rotateObj); | |
| 212 | 224 |  | 
| 213 | mObject.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) ); | |
| 214 | mObject.scale(factor); | |
| 215 | mObject.quaternion(mQuatInt1, center); | |
| 216 | mObject.quaternion(mQuatInt2, center); | |
| 225 | int centerSize = mCenter.getWidth(); | |
| 226 | Static3D rotateCen = new Static3D(width/2,height/2, 0); | |
| 217 | 227 |  | 
| 218 |       factor *= 0.5f;
 | |
| 228 |       float factorCen = (float)(mCols*SIZE) / (5*centerSize);  // make the 'center' bitmap 1/5 of the Object's width
 | |
| 219 | 229 |  | 
| 220 | mCenter.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 10) ); | |
| 221 | mCenter.scale(factor); | |
| 222 | mCenter.quaternion(mQuatInt1, center); | |
| 223 | mCenter.quaternion(mQuatInt2, center); | |
| 230 | mCenter.quaternion(mQuatInt1, rotateCen); | |
| 231 | mCenter.quaternion(mQuatInt2, rotateCen); | |
| 232 | mCenter.move( new Static3D( (width -factorCen*centerSize-factorObj*mObjWidth )/2 , | |
| 233 | (height-factorCen*centerSize-factorObj*mObjHeight)/2 , 10) ); | |
| 234 | mCenter.move(mMoveInter); | |
| 235 | mCenter.scale(factorCen); | |
| 224 | 236 |  | 
| 225 | 237 | setVertexEffects(); | 
| 226 | 238 |  | 
Also available in: Unified diff
Progress with vertex3D