Revision 40eef4b9
Added by Leszek Koltunski about 8 years ago
src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java | ||
---|---|---|
122 | 122 |
mObjWidth = bitmap.getWidth(); |
123 | 123 |
mObjHeight= bitmap.getHeight(); |
124 | 124 |
|
125 |
mObject = new DistortedObject(mObjWidth,mObjHeight,1);
|
|
125 |
mObject = new DistortedObject(mObjWidth,mObjHeight,0);
|
|
126 | 126 |
mObject.setTexture(bitmap); |
127 | 127 |
mEffects.apply(mObject); |
128 | 128 |
|
src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java | ||
---|---|---|
27 | 27 |
|
28 | 28 |
import org.distorted.examples.R; |
29 | 29 |
import org.distorted.library.Distorted; |
30 |
import org.distorted.library.DistortedObject; |
|
30 |
import org.distorted.library.DistortedEffectQueues; |
|
31 |
import org.distorted.library.DistortedTexture; |
|
31 | 32 |
import org.distorted.library.GridFlat; |
32 | 33 |
import org.distorted.library.EffectTypes; |
33 | 34 |
import org.distorted.library.type.Dynamic1D; |
... | ... | |
46 | 47 |
class CatAndDogRenderer implements GLSurfaceView.Renderer |
47 | 48 |
{ |
48 | 49 |
private GLSurfaceView mView; |
49 |
private DistortedObject mObject; |
|
50 |
private DistortedEffectQueues mQueues; |
|
51 |
private DistortedTexture mTexture; |
|
50 | 52 |
private GridFlat mGrid; |
51 |
private Static4D chromaRegion, alphaRegion; |
|
52 | 53 |
private int bmpHeight, bmpWidth; |
53 | 54 |
|
54 | 55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
56 | 57 |
public CatAndDogRenderer(GLSurfaceView v) |
57 | 58 |
{ |
58 | 59 |
mView = v; |
59 |
|
|
60 |
chromaRegion= new Static4D( 530, 200,100,100); |
|
61 |
alphaRegion = new Static4D( 230, 200,100,100); |
|
60 |
|
|
61 |
mGrid = new GridFlat(1,1); // no vertex effects, grid can be a (1x1) quad. |
|
62 |
mQueues = new DistortedEffectQueues(); |
|
63 |
|
|
64 |
Static4D chromaRegion= new Static4D( 530, 200,100,100); |
|
65 |
Static4D alphaRegion = new Static4D( 230, 200,100,100); |
|
66 |
|
|
67 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
68 |
chromaDyn.add(new Static1D(1)); |
|
69 |
chromaDyn.add(new Static1D(0)); |
|
70 |
|
|
71 |
mQueues.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true); |
|
72 |
|
|
73 |
Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f); |
|
74 |
alphaDyn.add(new Static1D(1)); |
|
75 |
alphaDyn.add(new Static1D(0)); |
|
76 |
|
|
77 |
mQueues.alpha( alphaDyn, alphaRegion, false ); |
|
62 | 78 |
} |
63 | 79 |
|
64 | 80 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
66 | 82 |
public void onDrawFrame(GL10 glUnused) |
67 | 83 |
{ |
68 | 84 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
69 |
mObject.draw(System.currentTimeMillis(), mGrid);
|
|
85 |
mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
|
|
70 | 86 |
} |
71 | 87 |
|
72 | 88 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
94 | 110 |
bmpHeight = bitmap.getHeight(); |
95 | 111 |
bmpWidth = bitmap.getWidth(); |
96 | 112 |
|
97 |
mGrid = new GridFlat(1,1); // no vertex effects, grid can be a (1x1) quad. |
|
98 |
|
|
99 |
mObject = new DistortedObject(bmpWidth,bmpHeight,1); |
|
100 |
mObject.setTexture(bitmap); |
|
101 |
|
|
102 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
103 |
chromaDyn.add(new Static1D(1)); |
|
104 |
chromaDyn.add(new Static1D(0)); |
|
105 |
|
|
106 |
mObject.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true); |
|
107 |
|
|
108 |
Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f); |
|
109 |
alphaDyn.add(new Static1D(1)); |
|
110 |
alphaDyn.add(new Static1D(0)); |
|
113 |
mTexture = new DistortedTexture(bmpWidth,bmpHeight,0); |
|
114 |
mTexture.setTexture(bitmap); |
|
111 | 115 |
|
112 |
mObject.alpha( alphaDyn, alphaRegion, false ); |
|
113 |
|
|
114 | 116 |
try |
115 | 117 |
{ |
116 | 118 |
Distorted.onSurfaceCreated(mView.getContext()); |
... | ... | |
139 | 141 |
diRotate.add(new Static1D( 0)); |
140 | 142 |
diRotate.add(new Static1D(360)); |
141 | 143 |
|
142 |
mObject.abortEffects(EffectTypes.MATRIX);
|
|
144 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
143 | 145 |
|
144 |
mObject.move(diMove);
|
|
145 |
mObject.scale(diScale);
|
|
146 |
mObject.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
|
|
146 |
mQueues.move(diMove);
|
|
147 |
mQueues.scale(diScale);
|
|
148 |
mQueues.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
|
|
147 | 149 |
|
148 | 150 |
Distorted.onSurfaceChanged(width, height); |
149 | 151 |
} |
src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java | ||
---|---|---|
29 | 29 |
|
30 | 30 |
import org.distorted.library.Distorted; |
31 | 31 |
import org.distorted.library.GridFlat; |
32 |
import org.distorted.library.DistortedObject; |
|
32 |
import org.distorted.library.DistortedTexture; |
|
33 |
import org.distorted.library.DistortedEffectQueues; |
|
33 | 34 |
import org.distorted.library.EffectTypes; |
34 | 35 |
import org.distorted.library.type.Dynamic1D; |
35 | 36 |
import org.distorted.library.type.Dynamic3D; |
... | ... | |
49 | 50 |
private static final int NUM = 3; |
50 | 51 |
|
51 | 52 |
private GLSurfaceView mView; |
52 |
private DistortedObject[] mObj; |
|
53 |
private DistortedEffectQueues[] mQueue; |
|
54 |
private DistortedTexture mTexture; |
|
53 | 55 |
private GridFlat mGrid; |
54 |
private Static3D pLeft, pRight, pNose1; |
|
55 |
private Static4D RegionEye; |
|
56 |
private Dynamic3D mDI; |
|
57 | 56 |
private int bmpHeight, bmpWidth; |
58 | 57 |
|
59 | 58 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
62 | 61 |
{ |
63 | 62 |
mView = v; |
64 | 63 |
|
65 |
// mObj[0] effects
|
|
66 |
pLeft = new Static3D(214, 206, 0); |
|
67 |
pRight= new Static3D(390, 212, 0); |
|
68 |
RegionEye = new Static4D(0,0,60,60); |
|
64 |
// mQueue[0] effects
|
|
65 |
Static3D pLeft = new Static3D(214, 206, 0);
|
|
66 |
Static3D pRight= new Static3D(390, 212, 0);
|
|
67 |
Static4D RegionEye = new Static4D(0,0,60,60);
|
|
69 | 68 |
|
70 |
// mObj[1] effects
|
|
71 |
mDI = new Dynamic3D(1000,0.0f);
|
|
72 |
mDI.add(new Static3D( 50,0,0));
|
|
73 |
mDI.add(new Static3D(-50,0,0));
|
|
74 |
pNose1 = new Static3D(305, 340, 0); |
|
69 |
// mQueue[1] effects
|
|
70 |
Dynamic3D dyn = new Dynamic3D(1000,0.0f);
|
|
71 |
dyn.add(new Static3D( 50,0,0));
|
|
72 |
dyn.add(new Static3D(-50,0,0));
|
|
73 |
Static3D pNose1 = new Static3D(305, 340, 0);
|
|
75 | 74 |
|
76 |
// we don't need to prepare anything for bmp[2] effects |
|
75 |
// we don't need to prepare anything for mQueue[2] effects |
|
76 |
|
|
77 |
mQueue= new DistortedEffectQueues[NUM]; |
|
78 |
|
|
79 |
for(int i=0; i<NUM; i++) mQueue[i] = new DistortedEffectQueues(); |
|
80 |
|
|
81 |
Dynamic1D sink = new Dynamic1D(2000,0.0f); |
|
82 |
sink.add(new Static1D( 1)); |
|
83 |
sink.add(new Static1D(10)); |
|
84 |
|
|
85 |
mQueue[0].sink(sink, pLeft, RegionEye); |
|
86 |
mQueue[0].sink(sink, pRight,RegionEye); |
|
87 |
mQueue[1].distort(dyn, pNose1); |
|
88 |
|
|
89 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
90 |
chromaDyn.add(new Static1D(0)); |
|
91 |
chromaDyn.add(new Static1D(1)); |
|
92 |
|
|
93 |
mQueue[2].chroma(chromaDyn, new Static3D(0,1,0) ); |
|
77 | 94 |
} |
78 | 95 |
|
79 | 96 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
84 | 101 |
|
85 | 102 |
long time = System.currentTimeMillis(); |
86 | 103 |
|
87 |
for(int i=NUM-1; i>=0; i--) mObj[i].draw(time, mGrid);
|
|
104 |
for(int i=NUM-1; i>=0; i--) mQueue[i].draw(time, mTexture, mGrid);
|
|
88 | 105 |
} |
89 | 106 |
|
90 | 107 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
93 | 110 |
{ |
94 | 111 |
for(int i=NUM-1; i>=0; i--) |
95 | 112 |
{ |
96 |
mObj[i].abortEffects(EffectTypes.MATRIX);
|
|
113 |
mQueue[i].abortEffects(EffectTypes.MATRIX);
|
|
97 | 114 |
} |
98 | 115 |
|
99 | 116 |
if( (float)bmpHeight/(NUM*bmpWidth) > (float)height/width ) |
... | ... | |
103 | 120 |
|
104 | 121 |
for(int i=NUM-1; i>=0; i--) |
105 | 122 |
{ |
106 |
mObj[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
|
|
107 |
mObj[i].scale(factor);
|
|
123 |
mQueue[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
|
|
124 |
mQueue[i].scale(factor);
|
|
108 | 125 |
} |
109 | 126 |
} |
110 | 127 |
else |
... | ... | |
115 | 132 |
|
116 | 133 |
for(int i=NUM-1; i>=0; i--) |
117 | 134 |
{ |
118 |
mObj[i].move( new Static3D(i*w, (height-h)/2, 0) );
|
|
119 |
mObj[i].scale(factor);
|
|
135 |
mQueue[i].move( new Static3D(i*w, (height-h)/2, 0) );
|
|
136 |
mQueue[i].scale(factor);
|
|
120 | 137 |
} |
121 | 138 |
} |
122 | 139 |
|
... | ... | |
148 | 165 |
bmpHeight = bitmap.getHeight(); |
149 | 166 |
bmpWidth = bitmap.getWidth(); |
150 | 167 |
|
151 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
|
168 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
|
169 |
mTexture = new DistortedTexture(bmpWidth, bmpHeight, 1); |
|
152 | 170 |
|
153 |
mObj = new DistortedObject[NUM]; |
|
154 |
mObj[0] = new DistortedObject(bmpWidth, bmpHeight, 1); |
|
155 |
|
|
156 |
for(int i=1; i<NUM; i++) mObj[i] = new DistortedObject(mObj[0], Distorted.CLONE_BITMAP); |
|
157 |
|
|
158 |
// setting the bitmap once is enough; others are cloned! |
|
159 |
mObj[0].setTexture(bitmap); |
|
160 |
|
|
161 |
Dynamic1D sink = new Dynamic1D(2000,0.0f); |
|
162 |
sink.add(new Static1D( 1)); |
|
163 |
sink.add(new Static1D(10)); |
|
171 |
mTexture.setTexture(bitmap); |
|
164 | 172 |
|
165 |
mObj[0].sink(sink, pLeft, RegionEye); |
|
166 |
mObj[0].sink(sink, pRight,RegionEye); |
|
167 |
mObj[1].distort(mDI, pNose1); |
|
168 |
|
|
169 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
170 |
chromaDyn.add(new Static1D(0)); |
|
171 |
chromaDyn.add(new Static1D(1)); |
|
172 |
|
|
173 |
mObj[2].chroma(chromaDyn, new Static3D(0,1,0) ); |
|
174 |
|
|
175 | 173 |
try |
176 | 174 |
{ |
177 | 175 |
Distorted.onSurfaceCreated(mView.getContext()); |
src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java | ||
---|---|---|
30 | 30 |
import android.opengl.GLSurfaceView; |
31 | 31 |
|
32 | 32 |
import org.distorted.library.GridFlat; |
33 |
import org.distorted.library.DistortedObject; |
|
33 |
import org.distorted.library.DistortedEffectQueues; |
|
34 |
import org.distorted.library.DistortedTexture; |
|
34 | 35 |
import org.distorted.library.Distorted; |
35 | 36 |
|
36 | 37 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
38 | 39 |
class DynamicRenderer implements GLSurfaceView.Renderer |
39 | 40 |
{ |
40 | 41 |
private DynamicSurfaceView mView; |
41 |
private DistortedObject mBackground; |
|
42 |
private DistortedTexture mTexture; |
|
43 |
private DistortedEffectQueues mQueues; |
|
42 | 44 |
private GridFlat mGrid; |
43 | 45 |
private Canvas mCanvas; |
44 | 46 |
private Bitmap mBitmap; |
... | ... | |
57 | 59 |
mPaint.setStyle(Style.FILL); |
58 | 60 |
|
59 | 61 |
mView = v; |
62 |
mGrid = new GridFlat(1,1); |
|
63 |
mQueues = new DistortedEffectQueues(); |
|
60 | 64 |
} |
61 | 65 |
|
62 | 66 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
80 | 84 |
texW = width; |
81 | 85 |
texH = height; |
82 | 86 |
|
83 |
mGrid = new GridFlat(1,1); |
|
84 |
mBackground = new DistortedObject(texW,texH,1); |
|
85 |
mBitmap = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888); |
|
86 |
mCanvas = new Canvas(mBitmap); |
|
87 |
mTexture= new DistortedTexture(texW,texH,0); |
|
88 |
mBitmap = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888); |
|
89 |
mCanvas = new Canvas(mBitmap); |
|
87 | 90 |
|
88 | 91 |
Distorted.onSurfaceChanged(texW,texH); |
89 | 92 |
mView.onSurfaceChanged(texW,texH); |
... | ... | |
99 | 102 |
|
100 | 103 |
mCanvas.drawRect(0, 0, texW, texH, mPaint); |
101 | 104 |
mView.drawCurve(mCanvas,time); |
102 |
mBackground.setTexture(mBitmap);
|
|
103 |
mBackground.draw(time,mGrid);
|
|
105 |
mTexture.setTexture(mBitmap);
|
|
106 |
mQueues.draw(time,mTexture,mGrid);
|
|
104 | 107 |
} |
105 | 108 |
|
106 | 109 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java | ||
---|---|---|
24 | 24 |
import android.widget.TextView; |
25 | 25 |
|
26 | 26 |
import org.distorted.examples.R; |
27 |
import org.distorted.library.DistortedObject;
|
|
27 |
import org.distorted.library.DistortedEffectQueues;
|
|
28 | 28 |
import org.distorted.library.EffectNames; |
29 | 29 |
import org.distorted.library.EffectTypes; |
30 | 30 |
import org.distorted.library.type.Dynamic1D; |
... | ... | |
77 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
78 | 78 |
// requires knowledge about effect nature |
79 | 79 |
|
80 |
void apply(DistortedObject object)
|
|
80 |
void apply(DistortedEffectQueues queues)
|
|
81 | 81 |
{ |
82 | 82 |
switch(mName) |
83 | 83 |
{ |
84 |
case ROTATE : mId = object.rotate (mDyn4, mCenterDyn); break;
|
|
85 |
case QUATERNION : mId = object.quaternion(mDyn4, mCenterDyn); break;
|
|
86 |
case MOVE : mId = object.move (mDyn3) ; break;
|
|
87 |
case SCALE : mId = object.scale (mDyn3) ; break;
|
|
88 |
case SHEAR : mId = object.shear (mDyn3, mCenterDyn); break;
|
|
89 |
|
|
90 |
case DISTORT : mId = object.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
91 |
case DEFORM : mId = object.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
92 |
case SINK : mId = object.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
93 |
case PINCH : mId = object.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
94 |
case SWIRL : mId = object.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
95 |
case WAVE : mId = object.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
96 |
|
|
97 |
case ALPHA : mId = object.alpha (mDyn1, mRegionDyn, false); break;
|
|
98 |
case SMOOTH_ALPHA : mId = object.alpha (mDyn1, mRegionDyn, true ); break;
|
|
99 |
case CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
100 |
case SMOOTH_CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
101 |
case BRIGHTNESS : mId = object.brightness(mDyn1, mRegionDyn, false); break;
|
|
102 |
case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1, mRegionDyn, true ); break;
|
|
103 |
case SATURATION : mId = object.saturation(mDyn1, mRegionDyn, false); break;
|
|
104 |
case SMOOTH_SATURATION: mId = object.saturation(mDyn1, mRegionDyn, true ); break;
|
|
105 |
case CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, false); break;
|
|
106 |
case SMOOTH_CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, true ); break;
|
|
84 |
case ROTATE : mId = queues.rotate (mDyn4, mCenterDyn); break;
|
|
85 |
case QUATERNION : mId = queues.quaternion(mDyn4, mCenterDyn); break;
|
|
86 |
case MOVE : mId = queues.move (mDyn3) ; break;
|
|
87 |
case SCALE : mId = queues.scale (mDyn3) ; break;
|
|
88 |
case SHEAR : mId = queues.shear (mDyn3, mCenterDyn); break;
|
|
89 |
|
|
90 |
case DISTORT : mId = queues.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
91 |
case DEFORM : mId = queues.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
92 |
case SINK : mId = queues.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
93 |
case PINCH : mId = queues.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
94 |
case SWIRL : mId = queues.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
95 |
case WAVE : mId = queues.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
96 |
|
|
97 |
case ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, false); break;
|
|
98 |
case SMOOTH_ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, true ); break;
|
|
99 |
case CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
100 |
case SMOOTH_CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
101 |
case BRIGHTNESS : mId = queues.brightness(mDyn1, mRegionDyn, false); break;
|
|
102 |
case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1, mRegionDyn, true ); break;
|
|
103 |
case SATURATION : mId = queues.saturation(mDyn1, mRegionDyn, false); break;
|
|
104 |
case SMOOTH_SATURATION: mId = queues.saturation(mDyn1, mRegionDyn, true ); break;
|
|
105 |
case CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, false); break;
|
|
106 |
case SMOOTH_CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, true ); break;
|
|
107 | 107 |
|
108 | 108 |
default: mId = -1; |
109 | 109 |
} |
src/main/java/org/distorted/examples/flag/FlagRenderer.java | ||
---|---|---|
27 | 27 |
import org.distorted.examples.R; |
28 | 28 |
import org.distorted.library.Distorted; |
29 | 29 |
import org.distorted.library.GridCubes; |
30 |
import org.distorted.library.DistortedObject; |
|
30 |
import org.distorted.library.DistortedEffectQueues; |
|
31 |
import org.distorted.library.DistortedTexture; |
|
31 | 32 |
import org.distorted.library.EffectTypes; |
32 | 33 |
import org.distorted.library.type.Dynamic; |
33 | 34 |
import org.distorted.library.type.Dynamic5D; |
... | ... | |
47 | 48 |
class FlagRenderer implements GLSurfaceView.Renderer |
48 | 49 |
{ |
49 | 50 |
private GLSurfaceView mView; |
50 |
private DistortedObject mObject; |
|
51 |
private DistortedEffectQueues mQueues; |
|
52 |
private DistortedTexture mTexture; |
|
51 | 53 |
private GridCubes mGrid; |
52 | 54 |
private int mObjWidth, mObjHeight; |
53 | 55 |
private DynamicQuat mQuatInt1, mQuatInt2; |
... | ... | |
63 | 65 |
{ |
64 | 66 |
mView = v; |
65 | 67 |
|
66 |
mGrid = new GridCubes(50,30,false); |
|
67 |
mObject = new DistortedObject(500,300,10); |
|
68 |
mQueues = new DistortedEffectQueues(); |
|
69 |
mGrid = new GridCubes(50,30,false); |
|
70 |
mTexture = new DistortedTexture(500,300,10); |
|
68 | 71 |
|
69 |
mObjWidth = mObject.getWidth();
|
|
70 |
mObjHeight= mObject.getHeight();
|
|
72 |
mObjWidth = mTexture.getWidth();
|
|
73 |
mObjHeight= mTexture.getHeight();
|
|
71 | 74 |
|
72 | 75 |
mWaveDyn = new Dynamic5D(1000,0.0f); |
73 | 76 |
mWaveSta1= new Static5D(0,0,-180,0,0); // all other values besides the |
... | ... | |
89 | 92 |
Static3D waveCenter = new Static3D(mObjWidth, mObjHeight/2, 0); // middle of the right edge |
90 | 93 |
Static4D waveRegion = new Static4D(0,0,mObjWidth,mObjWidth); |
91 | 94 |
|
92 |
mObject.wave(mWaveDyn, waveCenter, waveRegion);
|
|
95 |
mQueues.wave(mWaveDyn, waveCenter, waveRegion);
|
|
93 | 96 |
} |
94 | 97 |
|
95 | 98 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
136 | 139 |
public void onDrawFrame(GL10 glUnused) |
137 | 140 |
{ |
138 | 141 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
139 |
mObject.draw(System.currentTimeMillis(), mGrid);
|
|
142 |
mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
|
|
140 | 143 |
} |
141 | 144 |
|
142 | 145 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
145 | 148 |
{ |
146 | 149 |
mScreenMin = width<height ? width:height; |
147 | 150 |
|
148 |
mObject.abortEffects(EffectTypes.MATRIX);
|
|
151 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
149 | 152 |
float factor; |
150 | 153 |
|
151 | 154 |
if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object |
... | ... | |
157 | 160 |
factor = (0.8f*width)/mObjWidth; |
158 | 161 |
} |
159 | 162 |
|
160 |
mObject.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
|
|
161 |
mObject.scale(factor);
|
|
163 |
mQueues.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
|
|
164 |
mQueues.scale(factor);
|
|
162 | 165 |
Static3D center = new Static3D(mObjWidth/2,mObjHeight/2, 0); |
163 | 166 |
|
164 |
mObject.quaternion(mQuatInt1, center);
|
|
165 |
mObject.quaternion(mQuatInt2, center);
|
|
167 |
mQueues.quaternion(mQuatInt1, center);
|
|
168 |
mQueues.quaternion(mQuatInt2, center);
|
|
166 | 169 |
|
167 | 170 |
Distorted.onSurfaceChanged(width, height); |
168 | 171 |
} |
... | ... | |
189 | 192 |
catch(IOException e) { } |
190 | 193 |
} |
191 | 194 |
|
192 |
mObject.setTexture(bitmap);
|
|
195 |
mTexture.setTexture(bitmap);
|
|
193 | 196 |
|
194 | 197 |
try |
195 | 198 |
{ |
src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java | ||
---|---|---|
220 | 220 |
{ |
221 | 221 |
switch(parent.getId()) |
222 | 222 |
{ |
223 |
case R.id.matrix3dspinner : mEffectAdd = pos;
|
|
224 |
break;
|
|
223 |
case R.id.matrix3dspinner: mEffectAdd = pos; |
|
224 |
break; |
|
225 | 225 |
} |
226 | 226 |
} |
227 | 227 |
|
src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java | ||
---|---|---|
24 | 24 |
import android.widget.TextView; |
25 | 25 |
|
26 | 26 |
import org.distorted.examples.R; |
27 |
import org.distorted.library.DistortedObject;
|
|
27 |
import org.distorted.library.DistortedEffectQueues;
|
|
28 | 28 |
import org.distorted.library.EffectNames; |
29 | 29 |
import org.distorted.library.EffectTypes; |
30 | 30 |
import org.distorted.library.type.Dynamic1D; |
... | ... | |
77 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
78 | 78 |
// requires knowledge about effect nature |
79 | 79 |
|
80 |
void apply(DistortedObject object)
|
|
80 |
void apply(DistortedEffectQueues queues)
|
|
81 | 81 |
{ |
82 | 82 |
switch(mName) |
83 | 83 |
{ |
84 |
case ROTATE : mId = object.rotate (mDyn4, mCenterDyn); break;
|
|
85 |
case QUATERNION : mId = object.quaternion(mDyn4, mCenterDyn); break;
|
|
86 |
case MOVE : mId = object.move (mDyn3) ; break;
|
|
87 |
case SCALE : mId = object.scale (mDyn3) ; break;
|
|
88 |
case SHEAR : mId = object.shear (mDyn3, mCenterDyn); break;
|
|
89 |
|
|
90 |
case DISTORT : mId = object.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
91 |
case DEFORM : mId = object.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
92 |
case SINK : mId = object.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
93 |
case PINCH : mId = object.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
94 |
case SWIRL : mId = object.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
95 |
case WAVE : mId = object.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
96 |
|
|
97 |
case ALPHA : mId = object.alpha (mDyn1, mRegionDyn, false); break;
|
|
98 |
case SMOOTH_ALPHA : mId = object.alpha (mDyn1, mRegionDyn, true ); break;
|
|
99 |
case CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
100 |
case SMOOTH_CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
101 |
case BRIGHTNESS : mId = object.brightness(mDyn1, mRegionDyn, false); break;
|
|
102 |
case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1, mRegionDyn, true ); break;
|
|
103 |
case SATURATION : mId = object.saturation(mDyn1, mRegionDyn, false); break;
|
|
104 |
case SMOOTH_SATURATION: mId = object.saturation(mDyn1, mRegionDyn, true ); break;
|
|
105 |
case CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, false); break;
|
|
106 |
case SMOOTH_CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, true ); break;
|
|
84 |
case ROTATE : mId = queues.rotate (mDyn4, mCenterDyn); break;
|
|
85 |
case QUATERNION : mId = queues.quaternion(mDyn4, mCenterDyn); break;
|
|
86 |
case MOVE : mId = queues.move (mDyn3) ; break;
|
|
87 |
case SCALE : mId = queues.scale (mDyn3) ; break;
|
|
88 |
case SHEAR : mId = queues.shear (mDyn3, mCenterDyn); break;
|
|
89 |
|
|
90 |
case DISTORT : mId = queues.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
91 |
case DEFORM : mId = queues.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
92 |
case SINK : mId = queues.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
93 |
case PINCH : mId = queues.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
94 |
case SWIRL : mId = queues.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
95 |
case WAVE : mId = queues.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
96 |
|
|
97 |
case ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, false); break;
|
|
98 |
case SMOOTH_ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, true ); break;
|
|
99 |
case CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
100 |
case SMOOTH_CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
101 |
case BRIGHTNESS : mId = queues.brightness(mDyn1, mRegionDyn, false); break;
|
|
102 |
case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1, mRegionDyn, true ); break;
|
|
103 |
case SATURATION : mId = queues.saturation(mDyn1, mRegionDyn, false); break;
|
|
104 |
case SMOOTH_SATURATION: mId = queues.saturation(mDyn1, mRegionDyn, true ); break;
|
|
105 |
case CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, false); break;
|
|
106 |
case SMOOTH_CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, true ); break;
|
|
107 | 107 |
|
108 | 108 |
default: mId = -1; |
109 | 109 |
} |
src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java | ||
---|---|---|
34 | 34 |
import org.distorted.library.type.Static1D; |
35 | 35 |
import org.distorted.library.Distorted; |
36 | 36 |
import org.distorted.library.GridFlat; |
37 |
import org.distorted.library.DistortedObject; |
|
37 |
import org.distorted.library.DistortedEffectQueues; |
|
38 |
import org.distorted.library.DistortedTexture; |
|
38 | 39 |
|
39 | 40 |
import android.graphics.Bitmap; |
40 | 41 |
import android.graphics.BitmapFactory; |
... | ... | |
51 | 52 |
|
52 | 53 |
private GLSurfaceView mView; |
53 | 54 |
private DistortedObjectTree mScreen; |
54 |
private DistortedObject mLeaf; |
|
55 |
private DistortedTexture mLeaf; |
|
56 |
|
|
57 |
private int mScreenW, mScreenH; |
|
55 | 58 |
|
56 | 59 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
57 | 60 |
|
... | ... | |
59 | 62 |
{ |
60 | 63 |
mView = v; |
61 | 64 |
|
62 |
mLeaf = new DistortedObject(LEAF_SIZE,LEAF_SIZE,1);
|
|
65 |
mLeaf = new DistortedTexture(LEAF_SIZE,LEAF_SIZE,1);
|
|
63 | 66 |
GridFlat grid = new GridFlat(1,1); |
67 |
DistortedEffectQueues queue = new DistortedEffectQueues(); |
|
68 |
|
|
69 |
mScreenW = 9*LEAF_SIZE; |
|
70 |
mScreenH = 9*LEAF_SIZE; |
|
64 | 71 |
|
65 |
mScreen = new DistortedObjectTree(new DistortedObject(9*LEAF_SIZE,9*LEAF_SIZE,1), grid);
|
|
72 |
mScreen = new DistortedObjectTree(new DistortedTexture(mScreenW,mScreenH,0), queue, grid);
|
|
66 | 73 |
|
67 | 74 |
Dynamic1D rot = new Dynamic1D(5000,0.0f); |
68 | 75 |
rot.setMode(Dynamic1D.MODE_JUMP); |
... | ... | |
72 | 79 |
DistortedObjectTree[] mCircleNode = new DistortedObjectTree[NUM_CIRCLES]; |
73 | 80 |
|
74 | 81 |
int[] colors = new int[] {0,0,1, 0,0,0, 1,0,0, 1,1,0, 0,1,0}; // blue, black, red, yellow, green |
75 |
int[] positions = new int[] {0*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE,2*LEAF_SIZE, 6*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE/2,9*LEAF_SIZE/2, 9*LEAF_SIZE/2,9*LEAF_SIZE/2};
|
|
82 |
int[] positions = new int[] {0,2*LEAF_SIZE, 3*LEAF_SIZE,2*LEAF_SIZE, 6*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE/2,9*LEAF_SIZE/2, 9*LEAF_SIZE/2,9*LEAF_SIZE/2}; |
|
76 | 83 |
|
77 |
DistortedObject tmp; |
|
78 | 84 |
Static3D center = new Static3D(3*LEAF_SIZE/2, 3*LEAF_SIZE/2, 0); |
79 | 85 |
Static3D axis = new Static3D(0,0,1); |
80 | 86 |
Static3D moveVector = new Static3D(0,LEAF_SIZE,0); |
... | ... | |
83 | 89 |
{ |
84 | 90 |
if( i==0 ) |
85 | 91 |
{ |
86 |
mCircleNode[i] = new DistortedObjectTree(new DistortedObject(3*LEAF_SIZE,3*LEAF_SIZE,1), grid); |
|
92 |
queue = new DistortedEffectQueues(); |
|
93 |
mCircleNode[i] = new DistortedObjectTree(new DistortedTexture(3*LEAF_SIZE,3*LEAF_SIZE,1), queue, grid); |
|
87 | 94 |
|
88 | 95 |
for(int j=0; j<NUM_LEAVES; j++) |
89 | 96 |
{ |
90 |
tmp = new DistortedObject(mLeaf, Distorted.CLONE_BITMAP);
|
|
91 |
mCircleNode[i].attach(tmp,grid);
|
|
92 |
tmp.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
|
|
93 |
tmp.move(moveVector);
|
|
97 |
queue = new DistortedEffectQueues();
|
|
98 |
mCircleNode[i].attach(mLeaf, queue, grid);
|
|
99 |
queue.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
|
|
100 |
queue.move(moveVector);
|
|
94 | 101 |
} |
95 | 102 |
} |
96 | 103 |
else |
... | ... | |
99 | 106 |
} |
100 | 107 |
|
101 | 108 |
mScreen.attach(mCircleNode[i]); |
102 |
tmp = mCircleNode[i].getObject();
|
|
103 |
tmp.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
|
|
104 |
tmp.rotate( rot, axis, center );
|
|
105 |
tmp.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
|
|
109 |
queue = mCircleNode[i].getQueues();
|
|
110 |
queue.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
|
|
111 |
queue.rotate( rot, axis, center );
|
|
112 |
queue.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
|
|
106 | 113 |
} |
107 | 114 |
} |
108 | 115 |
|
... | ... | |
118 | 125 |
|
119 | 126 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
120 | 127 |
{ |
121 |
DistortedObject bmp = mScreen.getObject(); |
|
122 |
int bmpWidth = bmp.getWidth(); |
|
123 |
int bmpHeight = bmp.getHeight(); |
|
124 |
|
|
125 |
bmp.abortEffects(EffectTypes.MATRIX); |
|
128 |
DistortedEffectQueues queues = mScreen.getQueues(); |
|
129 |
|
|
130 |
queues.abortEffects(EffectTypes.MATRIX); |
|
126 | 131 |
|
127 |
if( (float)bmpHeight/bmpWidth > (float)height/width )
|
|
132 |
if( (float)mScreenH/mScreenW > (float)height/width )
|
|
128 | 133 |
{ |
129 |
int w = (height*bmpWidth)/bmpHeight;
|
|
130 |
float factor = (float)height/bmpHeight;
|
|
134 |
int w = (height*mScreenW)/mScreenH;
|
|
135 |
float factor = (float)height/mScreenH;
|
|
131 | 136 |
|
132 |
bmp.move( new Static3D((width-w)/2 ,0, 0) );
|
|
133 |
bmp.scale( factor );
|
|
137 |
queues.move( new Static3D((width-w)/2 ,0, 0) );
|
|
138 |
queues.scale( factor );
|
|
134 | 139 |
} |
135 | 140 |
else |
136 | 141 |
{ |
137 |
int h = (width*bmpHeight)/bmpWidth;
|
|
138 |
float factor = (float)width/bmpWidth;
|
|
142 |
int h = (width*mScreenH)/mScreenW;
|
|
143 |
float factor = (float)width/mScreenW;
|
|
139 | 144 |
|
140 |
bmp.move( new Static3D(0,(height-h)/2,0) );
|
|
141 |
bmp.scale( factor );
|
|
145 |
queues.move( new Static3D(0,(height-h)/2,0) );
|
|
146 |
queues.scale( factor );
|
|
142 | 147 |
} |
143 | 148 |
|
144 | 149 |
Distorted.onSurfaceChanged(width, height); |
src/main/java/org/distorted/examples/save/SaveRenderer.java | ||
---|---|---|
31 | 31 |
import org.distorted.examples.R; |
32 | 32 |
|
33 | 33 |
import org.distorted.library.Distorted; |
34 |
import org.distorted.library.DistortedObject; |
|
34 |
import org.distorted.library.DistortedEffectQueues; |
|
35 |
import org.distorted.library.DistortedTexture; |
|
35 | 36 |
import org.distorted.library.GridFlat; |
36 | 37 |
import org.distorted.library.DistortedFramebuffer; |
37 | 38 |
import org.distorted.library.EffectTypes; |
... | ... | |
52 | 53 |
class SaveRenderer implements GLSurfaceView.Renderer |
53 | 54 |
{ |
54 | 55 |
private GLSurfaceView mView; |
55 |
private DistortedObject mGirl; |
|
56 |
private DistortedTexture mGirl; |
|
57 |
private DistortedEffectQueues mQueues; |
|
56 | 58 |
private GridFlat mGrid; |
57 | 59 |
private DistortedFramebuffer mOffscreen; |
58 |
private Static3D pLeft, pRight; |
|
59 |
private Static4D sinkRegion; |
|
60 |
private Dynamic1D diSink; |
|
61 | 60 |
private Static1D s0; |
62 | 61 |
private Dynamic3D mScaleDyn; |
63 | 62 |
private Static3D mScaleFactor; |
... | ... | |
77 | 76 |
|
78 | 77 |
boobsSink = 1.0f; |
79 | 78 |
|
80 |
pLeft = new Static3D(132, 264, 0); |
|
81 |
pRight= new Static3D(247, 264, 0); |
|
79 |
Static3D pLeft = new Static3D(132, 264, 0);
|
|
80 |
Static3D pRight= new Static3D(247, 264, 0);
|
|
82 | 81 |
|
83 |
sinkRegion = new Static4D(0,0,60,60); |
|
82 |
Static4D sinkRegion = new Static4D(0,0,60,60);
|
|
84 | 83 |
|
85 | 84 |
s0 = new Static1D(boobsSink); |
86 | 85 |
|
87 |
diSink = new Dynamic1D(); |
|
86 |
Dynamic1D diSink = new Dynamic1D();
|
|
88 | 87 |
diSink.add(s0); |
89 | 88 |
|
90 | 89 |
mScale = 1.0f; |
91 | 90 |
mScaleDyn = new Dynamic3D(); |
92 | 91 |
mScaleFactor = new Static3D(mScale,mScale,1.0f); |
93 | 92 |
mScaleDyn.add(mScaleFactor); |
93 |
|
|
94 |
mQueues = new DistortedEffectQueues(); |
|
95 |
mQueues.sink( diSink, pLeft , sinkRegion); |
|
96 |
mQueues.sink( diSink, pRight, sinkRegion); |
|
94 | 97 |
} |
95 | 98 |
|
96 | 99 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
145 | 148 |
{ |
146 | 149 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
147 | 150 |
|
151 |
long time = System.currentTimeMillis(); |
|
152 |
|
|
148 | 153 |
if( isSaving ) // render to an offscreen buffer and read pixels |
149 | 154 |
{ |
150 |
mGirl.abortEffects(EffectTypes.MATRIX);
|
|
151 |
mGirl.scale(mScaleFactor);
|
|
152 |
mGirl.draw(System.currentTimeMillis(), mGrid, mOffscreen);
|
|
155 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
156 |
mQueues.scale(mScaleFactor);
|
|
157 |
mQueues.draw(time, mGirl, mGrid, mOffscreen);
|
|
153 | 158 |
applyMatrixEffects(scrWidth,scrHeight); |
154 | 159 |
|
155 | 160 |
int fW =(int)(mScale*bmpWidth); |
... | ... | |
164 | 169 |
isSaving = false; |
165 | 170 |
} |
166 | 171 |
|
167 |
mGirl.draw(System.currentTimeMillis(), mGrid);
|
|
172 |
mQueues.draw(time, mGirl, mGrid);
|
|
168 | 173 |
} |
169 | 174 |
|
170 | 175 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
171 | 176 |
|
172 | 177 |
private void applyMatrixEffects(int width, int height) |
173 | 178 |
{ |
174 |
mGirl.abortEffects(EffectTypes.MATRIX);
|
|
179 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
175 | 180 |
|
176 | 181 |
if( (float)bmpHeight/bmpWidth > (float)height/width ) |
177 | 182 |
{ |
178 | 183 |
int w = (height*bmpWidth)/bmpHeight; |
179 | 184 |
float factor = (float)height/bmpHeight; |
180 | 185 |
|
181 |
mGirl.move( new Static3D((width-w)/2,0,0) );
|
|
182 |
mGirl.scale(factor);
|
|
186 |
mQueues.move( new Static3D((width-w)/2,0,0) );
|
|
187 |
mQueues.scale(factor);
|
|
183 | 188 |
} |
184 | 189 |
else |
185 | 190 |
{ |
186 | 191 |
int h = (width*bmpHeight)/bmpWidth; |
187 | 192 |
float factor = (float)width/bmpWidth; |
188 | 193 |
|
189 |
mGirl.move( new Static3D(0,(height-h)/2,0) );
|
|
190 |
mGirl.scale(factor);
|
|
194 |
mQueues.move( new Static3D(0,(height-h)/2,0) );
|
|
195 |
mQueues.scale(factor);
|
|
191 | 196 |
} |
192 | 197 |
|
193 |
mGirl.scale(mScaleDyn);
|
|
198 |
mQueues.scale(mScaleDyn);
|
|
194 | 199 |
} |
195 | 200 |
|
196 | 201 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
229 | 234 |
bmpWidth = bitmap.getWidth(); |
230 | 235 |
|
231 | 236 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
232 |
mGirl = new DistortedObject(bmpWidth,bmpHeight,1);
|
|
237 |
mGirl = new DistortedTexture(bmpWidth,bmpHeight,0);
|
|
233 | 238 |
mGirl.setTexture(bitmap); |
234 | 239 |
|
235 |
mGirl.sink( diSink, pLeft , sinkRegion); |
|
236 |
mGirl.sink( diSink, pRight, sinkRegion); |
|
237 |
|
|
238 | 240 |
mOffscreen = new DistortedFramebuffer(bmpWidth,bmpHeight); |
239 | 241 |
|
240 | 242 |
try |
src/main/java/org/distorted/examples/wind/WindEffectsManager.java | ||
---|---|---|
21 | 21 |
|
22 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
23 | 23 |
|
24 |
import org.distorted.library.DistortedObject; |
|
24 |
import org.distorted.library.DistortedEffectQueues; |
|
25 |
import org.distorted.library.DistortedTexture; |
|
25 | 26 |
import org.distorted.library.type.Dynamic; |
26 | 27 |
import org.distorted.library.type.Dynamic3D; |
27 | 28 |
import org.distorted.library.type.Dynamic5D; |
... | ... | |
47 | 48 |
|
48 | 49 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
49 | 50 |
|
50 |
WindEffectsManager(DistortedObject obj)
|
|
51 |
WindEffectsManager(DistortedTexture texture)
|
|
51 | 52 |
{ |
52 |
mHeight = obj.getHeight();
|
|
53 |
mWidth = obj.getWidth();
|
|
53 |
mHeight = texture.getHeight();
|
|
54 |
mWidth = texture.getWidth();
|
|
54 | 55 |
|
55 | 56 |
shearFactor = new Static3D(0,0,0); |
56 | 57 |
shearDynamic= new Dynamic3D(); |
... | ... | |
89 | 90 |
|
90 | 91 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
91 | 92 |
|
92 |
synchronized void apply(DistortedObject obj, int wind)
|
|
93 |
synchronized void apply(DistortedEffectQueues queues, int wind)
|
|
93 | 94 |
{ |
94 | 95 |
Static3D midLeft = new Static3D(0,mHeight/2,0); |
95 | 96 |
Static3D midRight = new Static3D(mWidth,mHeight/2,0); |
... | ... | |
97 | 98 |
|
98 | 99 |
setWind(wind); |
99 | 100 |
|
100 |
obj.shear(shearDynamic,midLeft);
|
|
101 |
obj.scale(scaleDynamic);
|
|
102 |
obj.deform(deformForce,midRight);
|
|
103 |
obj.wave(windDynamic1, midRight, windRegion);
|
|
104 |
obj.wave(windDynamic2, midRight, windRegion);
|
|
105 |
obj.wave(windDynamic3, midRight, windRegion);
|
|
101 |
queues.shear(shearDynamic,midLeft);
|
|
102 |
queues.scale(scaleDynamic);
|
|
103 |
queues.deform(deformForce,midRight);
|
|
104 |
queues.wave(windDynamic1, midRight, windRegion);
|
|
105 |
queues.wave(windDynamic2, midRight, windRegion);
|
|
106 |
queues.wave(windDynamic3, midRight, windRegion);
|
|
106 | 107 |
} |
107 | 108 |
|
108 | 109 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/wind/WindRenderer.java | ||
---|---|---|
27 | 27 |
import org.distorted.examples.R; |
28 | 28 |
import org.distorted.library.Distorted; |
29 | 29 |
import org.distorted.library.GridCubes; |
30 |
import org.distorted.library.DistortedObject; |
|
30 |
import org.distorted.library.DistortedEffectQueues; |
|
31 |
import org.distorted.library.DistortedTexture; |
|
31 | 32 |
import org.distorted.library.type.Static1D; |
32 | 33 |
import org.distorted.library.type.Static3D; |
33 | 34 |
|
... | ... | |
42 | 43 |
class WindRenderer implements GLSurfaceView.Renderer |
43 | 44 |
{ |
44 | 45 |
private GLSurfaceView mView; |
45 |
private DistortedObject mObject; |
|
46 |
private DistortedEffectQueues mQueues; |
|
47 |
private DistortedTexture mTexture; |
|
46 | 48 |
private GridCubes mGrid; |
47 | 49 |
private WindEffectsManager mEffects; |
48 | 50 |
private int mObjWidth, mObjHeight; |
... | ... | |
55 | 57 |
mView = view; |
56 | 58 |
|
57 | 59 |
mGrid = new GridCubes(50,30,false); |
58 |
mObject = new DistortedObject(50,30,1); |
|
59 |
mEffects = new WindEffectsManager(mObject); |
|
60 |
mQueues = new DistortedEffectQueues(); |
|
61 |
mTexture = new DistortedTexture(50,30,1); |
|
62 |
mEffects = new WindEffectsManager(mTexture); |
|
60 | 63 |
|
61 |
mObjWidth = mObject.getWidth();
|
|
62 |
mObjHeight= mObject.getHeight();
|
|
64 |
mObjWidth = mTexture.getWidth();
|
|
65 |
mObjHeight= mTexture.getHeight();
|
|
63 | 66 |
} |
64 | 67 |
|
65 | 68 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
75 | 78 |
public void onDrawFrame(GL10 glUnused) |
76 | 79 |
{ |
77 | 80 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
78 |
mObject.draw(System.currentTimeMillis(),mGrid);
|
|
81 |
mQueues.draw(System.currentTimeMillis(),mTexture, mGrid);
|
|
79 | 82 |
} |
80 | 83 |
|
81 | 84 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
82 | 85 |
|
83 | 86 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
84 | 87 |
{ |
85 |
mObject.abortAllEffects();
|
|
88 |
mQueues.abortAllEffects();
|
|
86 | 89 |
|
87 | 90 |
float factor = ( (float)(width<height? width:height) )/(mObjHeight + 1.4f*mObjWidth); |
88 | 91 |
|
89 |
mObject.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
|
|
90 |
mObject.scale(factor);
|
|
92 |
mQueues.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
|
|
93 |
mQueues.scale(factor);
|
|
91 | 94 |
|
92 | 95 |
Static1D angle = new Static1D(-45); |
93 | 96 |
Static3D axis = new Static3D(0,0,1); |
94 | 97 |
Static3D center= new Static3D(0,mObjHeight/2,0); |
95 | 98 |
|
96 |
mObject.rotate(angle, axis, center);
|
|
99 |
mQueues.rotate(angle, axis, center);
|
|
97 | 100 |
|
98 |
mEffects.apply(mObject, mWind);
|
|
101 |
mEffects.apply(mQueues,mWind);
|
|
99 | 102 |
|
100 | 103 |
Distorted.onSurfaceChanged(width, height); |
101 | 104 |
} |
... | ... | |
122 | 125 |
catch(IOException e) { } |
123 | 126 |
} |
124 | 127 |
|
125 |
mObject.setTexture(bitmap);
|
|
128 |
mTexture.setTexture(bitmap);
|
|
126 | 129 |
|
127 | 130 |
try |
128 | 131 |
{ |
Also available in: Unified diff
Beginnings of split of DistortedObject into two separate classes: DistortedEffectQueues and DistortedTexture.
Still does not compile, but pushing already.