Revision 2890c5df
Added by Leszek Koltunski over 8 years ago
| src/main/java/org/distorted/examples/effects3d/Effects3DActivity.java | ||
|---|---|---|
| 44 | 44 |
import org.distorted.library.main.MeshObject; |
| 45 | 45 |
import org.distorted.library.main.DistortedTexture; |
| 46 | 46 |
import org.distorted.library.main.DistortedEffects; |
| 47 |
import org.distorted.library.EffectNames; |
|
| 48 |
import org.distorted.library.EffectTypes; |
|
| 49 | 47 |
|
| 50 | 48 |
import java.io.IOException; |
| 51 | 49 |
import java.io.InputStream; |
| src/main/java/org/distorted/examples/flag/FlagRenderer.java | ||
|---|---|---|
| 24 | 24 |
import android.opengl.GLSurfaceView; |
| 25 | 25 |
|
| 26 | 26 |
import org.distorted.examples.R; |
| 27 |
import org.distorted.library.effect.EffectName; |
|
| 28 |
import org.distorted.library.effect.MatrixEffectMove; |
|
| 29 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
|
| 30 |
import org.distorted.library.effect.MatrixEffectScale; |
|
| 31 |
import org.distorted.library.effect.VertexEffectWave; |
|
| 27 | 32 |
import org.distorted.library.main.Distorted; |
| 28 | 33 |
import org.distorted.library.main.DistortedEffects; |
| 29 | 34 |
import org.distorted.library.main.DistortedScreen; |
| 30 |
import org.distorted.library.EffectNames; |
|
| 31 | 35 |
import org.distorted.library.main.MeshCubes; |
| 32 | 36 |
import org.distorted.library.main.DistortedTexture; |
| 33 |
import org.distorted.library.EffectTypes; |
|
| 34 | 37 |
import org.distorted.library.type.Dynamic; |
| 35 | 38 |
import org.distorted.library.type.Dynamic5D; |
| 36 |
import org.distorted.library.type.DynamicQuat; |
|
| 37 | 39 |
import org.distorted.library.type.Static3D; |
| 38 | 40 |
import org.distorted.library.type.Static4D; |
| 39 | 41 |
import org.distorted.library.type.Static5D; |
| ... | ... | |
| 52 | 54 |
private DistortedEffects mEffects; |
| 53 | 55 |
private DistortedTexture mTexture; |
| 54 | 56 |
private DistortedScreen mScreen; |
| 55 |
private DynamicQuat mQuatInt1, mQuatInt2; |
|
| 56 | 57 |
private Dynamic5D mWaveDyn; |
| 57 | 58 |
private Static5D mWaveSta1, mWaveSta2; |
| 58 | 59 |
private int mObjWidth, mObjHeight; |
| 60 |
private Static3D mMove, mScale, mCenter; |
|
| 59 | 61 |
|
| 60 | 62 |
Static4D mQuat1, mQuat2; |
| 61 | 63 |
int mScreenMin; |
| ... | ... | |
| 83 | 85 |
mQuat1 = new Static4D( 0, 0, 0, 1); // unity quaternion |
| 84 | 86 |
mQuat2 = new Static4D(-0.25189602f,0.3546389f,0.009657208f,0.90038127f); // something semi-random that looks good |
| 85 | 87 |
|
| 86 |
mQuatInt1 = new DynamicQuat(0,0.5f); |
|
| 87 |
mQuatInt2 = new DynamicQuat(0,0.5f); |
|
| 88 |
|
|
| 89 |
mQuatInt1.add(mQuat1); |
|
| 90 |
mQuatInt2.add(mQuat2); |
|
| 91 |
|
|
| 92 | 88 |
Static3D waveCenter = new Static3D(mObjWidth, mObjHeight/2, 0); // middle of the right edge |
| 93 | 89 |
Static4D waveRegion = new Static4D(0,0,mObjWidth,mObjWidth); |
| 94 | 90 |
|
| 95 |
mEffects.wave(mWaveDyn, waveCenter, waveRegion); |
|
| 91 |
mEffects.apply( new VertexEffectWave(mWaveDyn, waveCenter, waveRegion) ); |
|
| 92 |
|
|
| 93 |
mMove = new Static3D(0,0,0); |
|
| 94 |
mScale = new Static3D(1,1,1); |
|
| 95 |
mCenter= new Static3D(0,0,0); |
|
| 96 |
|
|
| 97 |
mEffects.apply( new MatrixEffectMove(mMove)); |
|
| 98 |
mEffects.apply( new MatrixEffectScale(mScale)); |
|
| 99 |
mEffects.apply( new MatrixEffectQuaternion(mQuat1, mCenter) ); |
|
| 100 |
mEffects.apply( new MatrixEffectQuaternion(mQuat2, mCenter) ); |
|
| 96 | 101 |
|
| 97 | 102 |
mScreen = new DistortedScreen(mView); |
| 98 | 103 |
mScreen.attach(mTexture,mEffects, new MeshCubes(50,30,1) ); |
| ... | ... | |
| 149 | 154 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
| 150 | 155 |
{
|
| 151 | 156 |
mScreenMin = width<height ? width:height; |
| 152 |
|
|
| 153 |
mEffects.abortEffects(EffectTypes.MATRIX); |
|
| 154 |
float factor; |
|
| 155 |
|
|
| 156 |
if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object |
|
| 157 |
{
|
|
| 158 |
factor = (0.8f*height)/mObjHeight; |
|
| 159 |
} |
|
| 160 |
else |
|
| 161 |
{
|
|
| 162 |
factor = (0.8f*width)/mObjWidth; |
|
| 163 |
} |
|
| 164 |
|
|
| 165 |
mEffects.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) ); |
|
| 166 |
mEffects.scale(factor); |
|
| 167 |
Static3D center = new Static3D(mObjWidth/2,mObjHeight/2, 0); |
|
| 168 |
|
|
| 169 |
mEffects.quaternion(mQuatInt1, center); |
|
| 170 |
mEffects.quaternion(mQuatInt2, center); |
|
| 171 |
|
|
| 157 |
float factor = ( width*mObjHeight > height*mObjWidth ) ? (0.8f*height)/mObjHeight : (0.8f*width)/mObjWidth; |
|
| 158 |
mMove.set((width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0); |
|
| 159 |
mScale.set(factor,factor,factor); |
|
| 160 |
mCenter.set(mObjWidth/2,mObjHeight/2, 0); |
|
| 172 | 161 |
mScreen.resize(width, height); |
| 173 | 162 |
} |
| 174 | 163 |
|
| ... | ... | |
| 194 | 183 |
|
| 195 | 184 |
mTexture.setTexture(bitmap); |
| 196 | 185 |
|
| 197 |
DistortedEffects.enableEffect(EffectNames.WAVE);
|
|
| 186 |
DistortedEffects.enableEffect(EffectName.WAVE); |
|
| 198 | 187 |
|
| 199 | 188 |
try |
| 200 | 189 |
{
|
| src/main/java/org/distorted/examples/girl/GirlRenderer.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
import org.distorted.examples.R; |
| 29 | 29 |
|
| 30 |
import org.distorted.library.effect.EffectName; |
|
| 31 |
import org.distorted.library.effect.MatrixEffectMove; |
|
| 32 |
import org.distorted.library.effect.MatrixEffectScale; |
|
| 33 |
import org.distorted.library.effect.VertexEffectDistort; |
|
| 34 |
import org.distorted.library.effect.VertexEffectSink; |
|
| 35 |
import org.distorted.library.effect.VertexEffectSwirl; |
|
| 30 | 36 |
import org.distorted.library.main.Distorted; |
| 31 | 37 |
import org.distorted.library.main.DistortedScreen; |
| 32 |
import org.distorted.library.EffectNames; |
|
| 33 | 38 |
import org.distorted.library.main.MeshFlat; |
| 34 | 39 |
import org.distorted.library.main.DistortedTexture; |
| 35 | 40 |
import org.distorted.library.main.DistortedEffects; |
| 36 |
import org.distorted.library.EffectTypes; |
|
| 37 | 41 |
import org.distorted.library.type.Dynamic1D; |
| 38 | 42 |
import org.distorted.library.type.Dynamic3D; |
| 39 | 43 |
import org.distorted.library.type.Static1D; |
| ... | ... | |
| 56 | 60 |
private Static3D v0,v1,v2,v3; |
| 57 | 61 |
private Static1D dBegin, dMiddle, dEnd, s0; |
| 58 | 62 |
private int bmpHeight, bmpWidth; |
| 63 |
private Static3D mMove, mScale; |
|
| 59 | 64 |
|
| 60 | 65 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 61 | 66 |
|
| ... | ... | |
| 113 | 118 |
|
| 114 | 119 |
mEffects = new DistortedEffects(); |
| 115 | 120 |
|
| 116 |
mEffects.sink( diSink, pLeft, sinkRegion ); |
|
| 117 |
mEffects.sink( diSink, pRight,sinkRegion ); |
|
| 121 |
mEffects.apply( new VertexEffectSink(diSink, pLeft, sinkRegion) ); |
|
| 122 |
mEffects.apply( new VertexEffectSink(diSink, pRight,sinkRegion) ); |
|
| 123 |
mEffects.apply( new VertexEffectDistort(diL, pLeft , Region) ); |
|
| 124 |
mEffects.apply( new VertexEffectDistort(diR, pRight, Region) ); |
|
| 125 |
mEffects.apply( new VertexEffectSwirl(diHips, pHips, HipsRegion) ); |
|
| 118 | 126 |
|
| 119 |
mEffects.distort(diL, pLeft , Region);
|
|
| 120 |
mEffects.distort(diR, pRight, Region);
|
|
| 121 |
|
|
| 122 |
mEffects.swirl(diHips, pHips, HipsRegion );
|
|
| 127 |
mMove = new Static3D(0,0,0);
|
|
| 128 |
mScale= new Static3D(1,1,1);
|
|
| 129 |
mEffects.apply(new MatrixEffectMove(mMove)); |
|
| 130 |
mEffects.apply(new MatrixEffectScale(mScale));
|
|
| 123 | 131 |
|
| 124 | 132 |
mScreen = new DistortedScreen(mView); |
| 125 | 133 |
} |
| ... | ... | |
| 160 | 168 |
|
| 161 | 169 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
| 162 | 170 |
{
|
| 163 |
mEffects.abortEffects(EffectTypes.MATRIX); |
|
| 164 |
|
|
| 165 | 171 |
if( (float)bmpHeight/bmpWidth > (float)height/width ) |
| 166 | 172 |
{
|
| 167 | 173 |
int w = (height*bmpWidth)/bmpHeight; |
| 168 | 174 |
float factor = (float)height/bmpHeight; |
| 169 | 175 |
|
| 170 |
mEffects.move( new Static3D((width-w)/2,0,0) );
|
|
| 171 |
mEffects.scale(factor);
|
|
| 176 |
mMove.set((width-w)/2,0,0);
|
|
| 177 |
mScale.set(factor,factor,factor);
|
|
| 172 | 178 |
} |
| 173 | 179 |
else |
| 174 | 180 |
{
|
| 175 | 181 |
int h = (width*bmpHeight)/bmpWidth; |
| 176 | 182 |
float factor = (float)width/bmpWidth; |
| 177 | 183 |
|
| 178 |
mEffects.move( new Static3D(0,(height-h)/2,0) );
|
|
| 179 |
mEffects.scale(factor);
|
|
| 184 |
mMove.set(0,(height-h)/2,0);
|
|
| 185 |
mScale.set(factor,factor,factor);
|
|
| 180 | 186 |
} |
| 181 | 187 |
|
| 182 | 188 |
mScreen.resize(width, height); |
| ... | ... | |
| 213 | 219 |
mScreen.detachAll(); |
| 214 | 220 |
mScreen.attach(mTexture,mEffects,mMesh); |
| 215 | 221 |
|
| 216 |
DistortedEffects.enableEffect(EffectNames.DISTORT);
|
|
| 217 |
DistortedEffects.enableEffect(EffectNames.SINK);
|
|
| 218 |
DistortedEffects.enableEffect(EffectNames.SWIRL);
|
|
| 222 |
DistortedEffects.enableEffect(EffectName.DISTORT); |
|
| 223 |
DistortedEffects.enableEffect(EffectName.SINK); |
|
| 224 |
DistortedEffects.enableEffect(EffectName.SWIRL); |
|
| 219 | 225 |
|
| 220 | 226 |
try |
| 221 | 227 |
{
|
| src/main/java/org/distorted/examples/glow/GlowRenderer.java | ||
|---|---|---|
| 24 | 24 |
import android.opengl.GLSurfaceView; |
| 25 | 25 |
|
| 26 | 26 |
import org.distorted.examples.R; |
| 27 |
import org.distorted.library.effect.EffectName; |
|
| 28 |
import org.distorted.library.effect.FragmentEffectChroma; |
|
| 29 |
import org.distorted.library.effect.MatrixEffectMove; |
|
| 30 |
import org.distorted.library.effect.MatrixEffectRotate; |
|
| 31 |
import org.distorted.library.effect.MatrixEffectScale; |
|
| 32 |
import org.distorted.library.effect.PostprocessEffectGlow; |
|
| 27 | 33 |
import org.distorted.library.main.Distorted; |
| 28 | 34 |
import org.distorted.library.main.DistortedEffects; |
| 29 | 35 |
import org.distorted.library.main.DistortedEffectsPostprocess; |
| 30 | 36 |
import org.distorted.library.main.DistortedNode; |
| 31 | 37 |
import org.distorted.library.main.DistortedScreen; |
| 32 | 38 |
import org.distorted.library.main.DistortedTexture; |
| 33 |
import org.distorted.library.EffectNames; |
|
| 34 |
import org.distorted.library.EffectTypes; |
|
| 35 | 39 |
import org.distorted.library.main.MeshFlat; |
| 36 | 40 |
import org.distorted.library.main.MeshObject; |
| 37 | 41 |
import org.distorted.library.message.EffectListener; |
| ... | ... | |
| 57 | 61 |
private static final int NUM_LEAVES= colors.length/3; |
| 58 | 62 |
|
| 59 | 63 |
private GLSurfaceView mView; |
| 60 |
private DistortedNode mRoot; |
|
| 61 | 64 |
private DistortedTexture mLeaf; |
| 62 | 65 |
private DistortedScreen mScreen; |
| 63 | 66 |
private DistortedEffectsPostprocess[] mLeafGlow = new DistortedEffectsPostprocess[NUM_LEAVES]; |
| 67 |
private PostprocessEffectGlow[] mGlow = new PostprocessEffectGlow[NUM_LEAVES]; |
|
| 64 | 68 |
private int mRootW, mRootH; |
| 65 | 69 |
private int mGlowing; |
| 70 |
private Static3D mMove, mScale; |
|
| 66 | 71 |
|
| 67 | 72 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 68 | 73 |
|
| ... | ... | |
| 78 | 83 |
MeshObject mesh = new MeshFlat(1,1); |
| 79 | 84 |
DistortedEffects[] leafEffects = new DistortedEffects[NUM_LEAVES]; |
| 80 | 85 |
|
| 81 |
mRoot = new DistortedNode(surface, new DistortedEffects(), mesh);
|
|
| 86 |
DistortedNode root = new DistortedNode(surface, new DistortedEffects(), mesh);
|
|
| 82 | 87 |
|
| 83 | 88 |
Static3D moveVector = new Static3D(0,LEAF_SIZE,0); |
| 84 | 89 |
Static1D chromaLevel= new Static1D(0.5f); |
| 85 | 90 |
Static3D center = new Static3D(3*LEAF_SIZE/2, 3*LEAF_SIZE/2, 0); |
| 86 | 91 |
Static3D axis = new Static3D(0,0,1); |
| 87 | 92 |
|
| 93 |
MatrixEffectMove leafMove = new MatrixEffectMove(moveVector); |
|
| 94 |
|
|
| 88 | 95 |
for(int j=0; j<NUM_LEAVES; j++) |
| 89 | 96 |
{
|
| 90 | 97 |
mLeafGlow[j] = new DistortedEffectsPostprocess(); |
| 91 | 98 |
mLeafGlow[j].registerForMessages(this); |
| 92 | 99 |
|
| 93 | 100 |
leafEffects[j] = new DistortedEffects(); |
| 94 |
leafEffects[j].rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
|
|
| 95 |
leafEffects[j].move(moveVector);
|
|
| 96 |
leafEffects[j].chroma( chromaLevel, new Static3D(colors[3*j],colors[3*j+1], colors[3*j+2]) );
|
|
| 101 |
leafEffects[j].apply( new MatrixEffectRotate(new Static1D(j*(360/NUM_LEAVES)), axis, center) );
|
|
| 102 |
leafEffects[j].apply(leafMove);
|
|
| 103 |
leafEffects[j].apply( new FragmentEffectChroma(chromaLevel, new Static3D(colors[3*j],colors[3*j+1], colors[3*j+2])) );
|
|
| 97 | 104 |
DistortedNode node = new DistortedNode( mLeaf, leafEffects[j], mesh); |
| 98 | 105 |
node.setPostprocessEffects(mLeafGlow[j]); |
| 99 |
mRoot.attach(node);
|
|
| 106 |
root.attach(node);
|
|
| 100 | 107 |
} |
| 101 | 108 |
|
| 102 | 109 |
makeGlow(0); |
| 103 | 110 |
|
| 104 | 111 |
mScreen = new DistortedScreen(mView); |
| 105 |
mScreen.attach(mRoot); |
|
| 112 |
mScreen.attach(root); |
|
| 113 |
|
|
| 114 |
mMove = new Static3D(0,0,0); |
|
| 115 |
mScale= new Static3D(1,1,1); |
|
| 116 |
|
|
| 117 |
Dynamic1D rot = new Dynamic1D(5000,0.0f); |
|
| 118 |
rot.setMode(Dynamic1D.MODE_JUMP); |
|
| 119 |
rot.add(new Static1D( 0)); |
|
| 120 |
rot.add(new Static1D(360)); |
|
| 121 |
|
|
| 122 |
DistortedEffects effects = root.getEffects(); |
|
| 123 |
effects.apply(new MatrixEffectMove(mMove)); |
|
| 124 |
effects.apply(new MatrixEffectScale(mScale)); |
|
| 125 |
effects.apply( new MatrixEffectRotate(rot, axis, center) ); |
|
| 126 |
|
|
| 127 |
Dynamic1D radius = new Dynamic1D(5000,1.0f); |
|
| 128 |
Static1D startR = new Static1D( 0); |
|
| 129 |
Static1D endR = new Static1D(50); |
|
| 130 |
radius.add(startR); |
|
| 131 |
radius.add(endR); |
|
| 132 |
|
|
| 133 |
for(int leaf=0; leaf<NUM_LEAVES; leaf++) |
|
| 134 |
{
|
|
| 135 |
Dynamic4D color = new Dynamic4D(5000,1.0f); |
|
| 136 |
Static4D startC = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 0); |
|
| 137 |
Static4D endC = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 1); |
|
| 138 |
color.add(startC); |
|
| 139 |
color.add(endC); |
|
| 140 |
|
|
| 141 |
mGlow[leaf] = new PostprocessEffectGlow(radius,color); |
|
| 142 |
} |
|
| 106 | 143 |
} |
| 107 | 144 |
|
| 108 | 145 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 112 | 149 |
//android.util.Log.e("glow", "glowing: "+leaf);
|
| 113 | 150 |
|
| 114 | 151 |
mGlowing = leaf; |
| 115 |
|
|
| 116 |
Dynamic1D radius = new Dynamic1D(5000,1.0f); |
|
| 117 |
Static1D startR = new Static1D( 0); |
|
| 118 |
Static1D endR = new Static1D(50); |
|
| 119 |
radius.add(startR); |
|
| 120 |
radius.add(endR); |
|
| 121 |
|
|
| 122 |
Dynamic4D color = new Dynamic4D(5000,1.0f); |
|
| 123 |
Static4D startC = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 0); |
|
| 124 |
Static4D endC = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 1); |
|
| 125 |
color.add(startC); |
|
| 126 |
color.add(endC); |
|
| 127 |
|
|
| 128 |
mLeafGlow[leaf].glow( radius, color ); |
|
| 152 |
mLeafGlow[leaf].apply(mGlow[leaf]); |
|
| 129 | 153 |
} |
| 130 | 154 |
|
| 131 | 155 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 132 | 156 |
// Glow finished. Make the next Leaf glow. |
| 133 | 157 |
|
| 134 |
public void effectMessage(final EffectMessage em, final long effectID, final EffectNames effectName, final long objectID)
|
|
| 158 |
public void effectMessage(final EffectMessage em, final long effectID, final long objectID) |
|
| 135 | 159 |
{
|
| 136 | 160 |
switch(em) |
| 137 | 161 |
{
|
| ... | ... | |
| 162 | 186 |
int w = (int)(factor*mRootW); |
| 163 | 187 |
int h = (int)(factor*mRootH); |
| 164 | 188 |
|
| 165 |
Dynamic1D rot = new Dynamic1D(5000,0.0f); |
|
| 166 |
rot.setMode(Dynamic1D.MODE_JUMP); |
|
| 167 |
rot.add(new Static1D( 0)); |
|
| 168 |
rot.add(new Static1D(360)); |
|
| 169 |
|
|
| 170 |
Static3D center = new Static3D(3*LEAF_SIZE/2, 3*LEAF_SIZE/2, 0); |
|
| 171 |
Static3D axis = new Static3D(0,0,1); |
|
| 172 |
|
|
| 173 |
DistortedEffects effects = mRoot.getEffects(); |
|
| 174 |
effects.abortEffects(EffectTypes.MATRIX); |
|
| 175 |
effects.move( new Static3D((width-w)/2 ,(height-h)/2, 0) ); |
|
| 176 |
effects.scale( factor ); |
|
| 177 |
effects.rotate( rot, axis, center ); |
|
| 178 |
|
|
| 189 |
mMove.set((width-w)/2 ,(height-h)/2, 0); |
|
| 190 |
mScale.set( factor,factor,factor ); |
|
| 179 | 191 |
mScreen.resize(width, height); |
| 180 | 192 |
} |
| 181 | 193 |
|
| ... | ... | |
| 201 | 213 |
|
| 202 | 214 |
mLeaf.setTexture(leaf); |
| 203 | 215 |
|
| 204 |
DistortedEffects.enableEffect(EffectNames.CHROMA);
|
|
| 205 |
DistortedEffects.enableEffect(EffectNames.GLOW);
|
|
| 216 |
DistortedEffects.enableEffect(EffectName.CHROMA); |
|
| 217 |
DistortedEffects.enableEffect(EffectName.GLOW); |
|
| 206 | 218 |
|
| 207 | 219 |
try |
| 208 | 220 |
{
|
Also available in: Unified diff
Further progress with Apps.