Revision 9567a9ae
Added by Leszek Koltunski 10 months ago
src/main/java/org/distorted/objectlib/helpers/FactoryCubit.java | ||
---|---|---|
234 | 234 |
sInfo.outerVertices = new float[1][len][2]; |
235 | 235 |
sInfo.fullVertices = null; |
236 | 236 |
|
237 |
float[][] t = sInfo.outerVertices[0]; |
|
238 |
|
|
237 | 239 |
for( int vertex=0; vertex<len; vertex++ ) |
238 | 240 |
{ |
239 |
sInfo.outerVertices[0][vertex][0] = vert3D[vertex][0] / info.scale;
|
|
240 |
sInfo.outerVertices[0][vertex][1] = vert3D[vertex][1] / info.scale;
|
|
241 |
t[vertex][0] = vert3D[vertex][0] / info.scale;
|
|
242 |
t[vertex][1] = vert3D[vertex][1] / info.scale;
|
|
241 | 243 |
} |
242 | 244 |
|
243 | 245 |
mStickerCoords.add(sInfo); |
... | ... | |
734 | 736 |
} |
735 | 737 |
|
736 | 738 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
737 |
// even if this is a multigon, then FaceTransform.vertices is the outer edge!
|
|
739 |
// even if this is a multigon, then StickerCoords.outerVertices is the outer edge!
|
|
738 | 740 |
// (see fitInSquare multigon variant) |
739 | 741 |
|
740 | 742 |
private boolean successfullyCollapsedStickers(final FaceTransform newInfo, final FaceTransform oldInfo) |
... | ... | |
854 | 856 |
|
855 | 857 |
private void printTransform(FaceTransform f) |
856 | 858 |
{ |
857 |
android.util.Log.e("D", "face="+f.face+" q=("+f.qx+", "+f.qy+", "+f.qz+", "+f.qw+") v=("
|
|
858 |
+f.vx+", "+f.vy+", "+f.vz+") scale="+f.scale+" sticker="+f.sticker);
|
|
859 |
android.util.Log.e("D", "face="+f.face+" sticker="+f.sticker+" scale="+f.scale+
|
|
860 |
" q=("+f.qx+", "+f.qy+", "+f.qz+", "+f.qw+") v=("+f.vx+", "+f.vy+", "+f.vz+")");
|
|
859 | 861 |
} |
860 | 862 |
|
861 | 863 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
958 | 960 |
} |
959 | 961 |
} |
960 | 962 |
|
963 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
964 |
|
|
965 |
private String printSticker(StickerCoords info) |
|
966 |
{ |
|
967 |
String ret = (info.outer?"OUTER":"INNER")+" scale: "+info.scale+"\n"; |
|
968 |
|
|
969 |
int len = info.outerVertices.length; |
|
970 |
|
|
971 |
for(int l=0; l<len; l++) |
|
972 |
{ |
|
973 |
float[][] outer = info.outerVertices[l]; |
|
974 |
int numV = outer.length; |
|
975 |
|
|
976 |
ret += " Loop "+l+" verts: "+numV+" { "; |
|
977 |
for(int v=0; v<numV; v++) |
|
978 |
{ |
|
979 |
if(v!=0) ret += ", "; |
|
980 |
ret += (outer[v][0]+"f, "+outer[v][1]+"f"); |
|
981 |
} |
|
982 |
|
|
983 |
ret += "}\n"; |
|
984 |
} |
|
985 |
|
|
986 |
return ret; |
|
987 |
} |
|
988 |
|
|
961 | 989 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
962 | 990 |
// INTERNAL API |
963 | 991 |
|
... | ... | |
971 | 999 |
for(int s=0; s<stickers; s++) |
972 | 1000 |
{ |
973 | 1001 |
StickerCoords info = mStickerCoords.get(s); |
974 |
|
|
975 | 1002 |
if( info.outer ) ret++; |
976 |
|
|
977 |
String ver = (info.outer?"OUTER":"INNER")+" scale: "+info.scale+" { "; |
|
978 |
int len = info.outerVertices.length; |
|
979 |
|
|
980 |
for(int i=0; i<len; i++) |
|
981 |
{ |
|
982 |
float[][] outer = info.outerVertices[i]; |
|
983 |
int numStickers = outer.length; |
|
984 |
|
|
985 |
for(int j=0; j<numStickers; j++) |
|
986 |
{ |
|
987 |
if(j!=0) ver+=", "; |
|
988 |
ver += (outer[j][0]+"f, "+outer[j][1]+"f"); |
|
989 |
} |
|
990 |
|
|
991 |
ver += "\n"; |
|
992 |
} |
|
993 |
|
|
994 |
ver += " }"; |
|
995 |
android.util.Log.d("D", ver); |
|
1003 |
String str = printSticker(info); |
|
1004 |
android.util.Log.d("D", "Sticker "+s+" "+str); |
|
996 | 1005 |
} |
997 | 1006 |
|
998 | 1007 |
android.util.Log.d("D", "---- END STICKER COORDS ----"); |
... | ... | |
1279 | 1288 |
} |
1280 | 1289 |
} |
1281 | 1290 |
|
1291 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
1292 |
|
|
1293 |
private void debugVerts(float[][][] verts) |
|
1294 |
{ |
|
1295 |
int len = verts.length; |
|
1296 |
String s = ""; |
|
1297 |
|
|
1298 |
for(int i=0; i<len; i++) |
|
1299 |
{ |
|
1300 |
s += "\nloop "+i+" : "; |
|
1301 |
float[][] v = verts[i]; |
|
1302 |
int l= v.length; |
|
1303 |
for(int j=0; j<l; j++) s += (" ("+v[j][0]+", "+v[j][1]+")"); |
|
1304 |
} |
|
1305 |
|
|
1306 |
android.util.Log.e("D", "copiedVerts: "+s); |
|
1307 |
} |
|
1308 |
|
|
1282 | 1309 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
1283 | 1310 |
|
1284 | 1311 |
public MeshBase createRoundedSolid(final ObjectShape shape, final ObjectFaceShape faceShape, |
... | ... | |
1297 | 1324 |
int exIndex=0, exVertices=0, alpha=0, N=0; |
1298 | 1325 |
float height=0.0f, dist=0.0f, K=0.0f; |
1299 | 1326 |
|
1327 |
android.util.Log.e("D", "createRoundSolid, numFaces="+numFaces); |
|
1328 |
|
|
1300 | 1329 |
for(int face=0; face<numFaces; face++) |
1301 | 1330 |
{ |
1302 | 1331 |
fInfo = mNewFaceTransf.get(face); |
... | ... | |
1351 | 1380 |
} |
1352 | 1381 |
} |
1353 | 1382 |
|
1383 |
if( lenVerts>=2 ) debugVerts(copiedVerts); |
|
1384 |
|
|
1354 | 1385 |
meshes[face] = new MeshMultigon(copiedVerts,bandsComputed,exIndex,exVertices); |
1355 | 1386 |
} |
1356 | 1387 |
else |
Also available in: Unified diff
improvements from the 'texture coordinate' investigation.