| 57 |
57 |
private int mCols, mRows, mSlices;
|
| 58 |
58 |
private int[][] mCubes;
|
| 59 |
59 |
private byte[][] mInflateX, mInflateY;
|
| 60 |
|
private float mInfCorr;
|
| 61 |
60 |
private ArrayList<Edge> mEdges = new ArrayList<>();
|
| 62 |
61 |
|
| 63 |
62 |
private int currVert;
|
| ... | ... | |
| 191 |
190 |
mCols = cols;
|
| 192 |
191 |
mRows = desc.length()/cols;
|
| 193 |
192 |
|
| 194 |
|
mInfCorr = mRows>mCols ? mRows:mCols;
|
| 195 |
|
mInfCorr = mSlices>mInfCorr ? mSlices : mInfCorr;
|
| 196 |
|
|
| 197 |
193 |
mCubes = new int[mRows][mCols];
|
| 198 |
194 |
mInflateX = new byte[mRows+1][mCols+1];
|
| 199 |
195 |
mInflateY = new byte[mRows+1][mCols+1];
|
| ... | ... | |
| 230 |
226 |
mInflateX = new byte[mRows+1][mCols+1];
|
| 231 |
227 |
mInflateY = new byte[mRows+1][mCols+1];
|
| 232 |
228 |
|
| 233 |
|
mInfCorr = mRows>mCols ? mRows:mCols;
|
| 234 |
|
mInfCorr = mSlices>mInfCorr ? mSlices : mInfCorr;
|
| 235 |
|
|
| 236 |
229 |
for(int col=0; col<mCols; col++)
|
| 237 |
230 |
for(int row=0; row<mRows; row++)
|
| 238 |
231 |
mCubes[row][col] = 1;
|
| ... | ... | |
| 663 |
656 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+1] = mNormalY[index];
|
| 664 |
657 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+2] = mNormalZ[index];
|
| 665 |
658 |
|
| 666 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInfCorr*mInflateX[row][col]/2.0f;
|
| 667 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInfCorr*mInflateY[row][col]/2.0f;
|
| 668 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = mInfCorr*vectZ;
|
|
659 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInflateX[row][col]/2.0f;
|
|
660 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInflateY[row][col]/2.0f;
|
|
661 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = vectZ;
|
| 669 |
662 |
|
| 670 |
663 |
attribs[VERT_ATTRIBS*currVert + TEX_ATTRIB ] = x;
|
| 671 |
664 |
attribs[VERT_ATTRIBS*currVert + TEX_ATTRIB+1] = 1.0f-y;
|
| ... | ... | |
| 697 |
690 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+1] = 1.0f;
|
| 698 |
691 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+2] = (slice==0 ? R : (slice==mSlices ? -R:0) );
|
| 699 |
692 |
|
| 700 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInfCorr*mInflateX[row][col]/2.0f;
|
| 701 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInfCorr*mInflateY[row][col]/2.0f;
|
| 702 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = mInfCorr*z;
|
|
693 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInflateX[row][col]/2.0f;
|
|
694 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInflateY[row][col]/2.0f;
|
|
695 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = z;
|
| 703 |
696 |
|
| 704 |
697 |
texY = (mRows-row+slice)%(2*mRows);
|
| 705 |
698 |
if( texY>mRows ) texY = 2*mRows-texY;
|
| ... | ... | |
| 722 |
715 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+1] =-1.0f;
|
| 723 |
716 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+2] = (slice==0 ? R : (slice==mSlices ? -R:0) );
|
| 724 |
717 |
|
| 725 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInfCorr*mInflateX[row][col]/2.0f;
|
| 726 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInfCorr*mInflateY[row][col]/2.0f;
|
| 727 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = mInfCorr*z;
|
|
718 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInflateX[row][col]/2.0f;
|
|
719 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInflateY[row][col]/2.0f;
|
|
720 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = z;
|
| 728 |
721 |
|
| 729 |
722 |
texY = (mRows-row+slice)%(2*mRows);
|
| 730 |
723 |
if( texY>mRows ) texY = 2*mRows-texY;
|
| ... | ... | |
| 747 |
740 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+1] = side==WEST ? 0.0f : (side==NORTH?-R:R);
|
| 748 |
741 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+2] = (slice==0 ? R : (slice==mSlices ? -R:0) );
|
| 749 |
742 |
|
| 750 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInfCorr*mInflateX[row][col]/2.0f;
|
| 751 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInfCorr*mInflateY[row][col]/2.0f;
|
| 752 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = mInfCorr*z;
|
|
743 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInflateX[row][col]/2.0f;
|
|
744 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInflateY[row][col]/2.0f;
|
|
745 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = z;
|
| 753 |
746 |
|
| 754 |
747 |
texX = (col+slice)%(2*mCols);
|
| 755 |
748 |
if( texX>mCols ) texX = 2*mCols-texX;
|
| ... | ... | |
| 772 |
765 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+1] = side==EAST ? 0.0f : (side==SOUTH?-R:R);
|
| 773 |
766 |
attribs[VERT_ATTRIBS*currVert + NOR_ATTRIB+2] = (slice==0 ? R : (slice==mSlices ? -R:0) );
|
| 774 |
767 |
|
| 775 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInfCorr*mInflateX[row][col]/2.0f;
|
| 776 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInfCorr*mInflateY[row][col]/2.0f;
|
| 777 |
|
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = mInfCorr*z;
|
|
768 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB ] = mInflateX[row][col]/2.0f;
|
|
769 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+1] = mInflateY[row][col]/2.0f;
|
|
770 |
attribs[VERT_ATTRIBS*currVert + INF_ATTRIB+2] = z;
|
| 778 |
771 |
|
| 779 |
772 |
texX = (col+slice)%(2*mCols);
|
| 780 |
773 |
if( texX>mCols ) texX = 2*mCols-texX;
|
Improve computation of the thickness of the postprocessing halo - should be independent of the size of underlying object now.
Still it is not completely ok, it appears to depend on the ModelView matrix (use the Effects3D app to rotate the object around Z-axis to see this)