39 |
39 |
private static final float SQ3 = (float)Math.sqrt(3);
|
40 |
40 |
private static final float SQ6 = (float)Math.sqrt(6);
|
41 |
41 |
|
42 |
|
private static final float IVY_D = 0.10f;
|
|
42 |
private static final float IVY_D = 0.003f;
|
43 |
43 |
private static final int IVY_N = 8;
|
|
44 |
private static final float IVY_C = 0.59f;
|
|
45 |
private static final float IVY_M = 0.35f;
|
44 |
46 |
|
45 |
47 |
private static final Static1D RADIUS = new Static1D(1);
|
46 |
48 |
|
... | ... | |
505 |
507 |
MeshBase[] meshes = new MeshBase[6];
|
506 |
508 |
|
507 |
509 |
final float angle = (float)Math.PI/(2*IVY_N);
|
508 |
|
final float CORR = 1.0f - IVY_D*SQ2;
|
509 |
|
final float DIST = 0.4f;
|
510 |
|
final float CORR2 = 0.5f;
|
511 |
|
float[] vertices = new float[2*(IVY_N+1)+6];
|
|
510 |
final float CORR = 1.0f - 2*IVY_D;
|
|
511 |
final float DIST = -0.5f*CORR + IVY_D;
|
|
512 |
float[] vertices = new float[2*(IVY_N+1)+6];
|
512 |
513 |
|
513 |
|
vertices[0] = (-0.5f+IVY_D-DIST)*CORR2;
|
514 |
|
vertices[1] = ( 0.5f -DIST)*CORR2;
|
515 |
|
vertices[2] = ( 0.5f -DIST)*CORR2;
|
516 |
|
vertices[3] = ( 0.5f -DIST)*CORR2;
|
517 |
|
vertices[4] = ( 0.5f -DIST)*CORR2;
|
518 |
|
vertices[5] = (-0.5f+IVY_D-DIST)*CORR2;
|
|
514 |
vertices[0] = (0.5f-IVY_M) * IVY_C;
|
|
515 |
vertices[1] = (DIST-IVY_M) * IVY_C;
|
|
516 |
vertices[2] = (0.5f-IVY_M) * IVY_C;
|
|
517 |
vertices[3] = (0.5f-IVY_M) * IVY_C;
|
|
518 |
vertices[4] = (DIST-IVY_M) * IVY_C;
|
|
519 |
vertices[5] = (0.5f-IVY_M) * IVY_C;
|
519 |
520 |
|
520 |
521 |
for(int i=0; i<=IVY_N; i++)
|
521 |
522 |
{
|
522 |
|
float sin = (float)Math.sin(i*angle);
|
523 |
|
float cos = (float)Math.cos(i*angle);
|
|
523 |
float ang = (IVY_N-i)*angle;
|
|
524 |
float sin = (float)Math.sin(ang);
|
|
525 |
float cos = (float)Math.cos(ang);
|
524 |
526 |
|
525 |
|
vertices[2*i+6] = (CORR*(cos-0.5f)-DIST)*CORR2;
|
526 |
|
vertices[2*i+7] = (CORR*(sin-0.5f)-DIST)*CORR2;
|
|
527 |
vertices[2*i+6] = (CORR*(cos-0.5f)-IVY_M)*IVY_C;
|
|
528 |
vertices[2*i+7] = (CORR*(sin-0.5f)-IVY_M)*IVY_C;
|
527 |
529 |
}
|
528 |
530 |
|
529 |
|
float[] bands0 = computeBands(+0.02f,18,0.2f,0.5f,5);
|
530 |
|
float[] bands1 = computeBands(-0.10f,20,0.2f,0.0f,2);
|
|
531 |
float[] bands0 = computeBands(+0.012f,20,0.2f,0.5f,7);
|
|
532 |
float[] bands1 = computeBands(-0.100f,20,0.2f,0.0f,2);
|
531 |
533 |
|
532 |
|
meshes[0] = new MeshPolygon(vertices,bands0,0,0);
|
|
534 |
meshes[0] = new MeshPolygon(vertices,bands0,1,2);
|
533 |
535 |
meshes[0].setEffectAssociation(0,1,0);
|
534 |
536 |
meshes[1] = meshes[0].copy(true);
|
535 |
537 |
meshes[1].setEffectAssociation(0,2,0);
|
536 |
538 |
meshes[2] = meshes[0].copy(true);
|
537 |
539 |
meshes[2].setEffectAssociation(0,4,0);
|
538 |
|
meshes[3] = new MeshPolygon(vertices,bands1,0,0);
|
|
540 |
meshes[3] = new MeshPolygon(vertices,bands1,1,2);
|
539 |
541 |
meshes[3].setEffectAssociation(0,8,0);
|
540 |
542 |
meshes[4] = meshes[3].copy(true);
|
541 |
543 |
meshes[4].setEffectAssociation(0,16,0);
|
... | ... | |
982 |
984 |
|
983 |
985 |
VertexEffect[] createVertexEffectsIvyCorner()
|
984 |
986 |
{
|
985 |
|
float DIST=0.1f;
|
986 |
|
|
987 |
987 |
Static3D axisX = new Static3D(1,0,0);
|
988 |
988 |
Static3D axisY = new Static3D(0,1,0);
|
989 |
989 |
Static1D angle1 = new Static1D(+90);
|
990 |
990 |
Static1D angle2 = new Static1D(-90);
|
991 |
991 |
Static3D center = new Static3D(0,0,0);
|
992 |
|
Static3D move1 = new Static3D(-DIST,-DIST,0);
|
|
992 |
Static3D move1 = new Static3D(IVY_M-0.5f,IVY_M-0.5f,0);
|
993 |
993 |
|
994 |
994 |
VertexEffect[] effect = new VertexEffect[5];
|
995 |
995 |
|
996 |
|
effect[0] = new VertexEffectScale(2.0f);
|
|
996 |
effect[0] = new VertexEffectScale(1/IVY_C);
|
997 |
997 |
effect[1] = new VertexEffectMove(move1);
|
998 |
998 |
effect[2] = new VertexEffectScale(new Static3D(1,1,-1));
|
999 |
999 |
effect[3] = new VertexEffectRotate(angle1,axisX,center);
|
... | ... | |
1268 |
1268 |
|
1269 |
1269 |
Static3D center = new Static3D(-0.5f,-0.5f,-0.5f);
|
1270 |
1270 |
Static3D[] vertices = new Static3D[4];
|
1271 |
|
float DIST = IVY_D-0.5f;
|
1272 |
|
vertices[0] = new Static3D(+0.5f,+0.5f,+0.5f);
|
1273 |
|
vertices[1] = new Static3D( DIST,+0.5f,+0.5f);
|
1274 |
|
vertices[2] = new Static3D(+0.5f, DIST,+0.5f);
|
1275 |
|
vertices[3] = new Static3D(+0.5f,+0.5f, DIST);
|
|
1271 |
vertices[0] = new Static3D(+0.0f,+0.0f,+0.0f);
|
|
1272 |
vertices[1] = new Static3D(-1.0f,+0.0f,+0.0f);
|
|
1273 |
vertices[2] = new Static3D(+0.0f,-1.0f,+0.0f);
|
|
1274 |
vertices[3] = new Static3D(+0.0f,+0.0f,-1.0f);
|
1276 |
1275 |
|
1277 |
|
roundCorners(mesh,center,vertices,0.06f,0.12f);
|
|
1276 |
roundCorners(mesh,center,vertices,0.03f,0.10f);
|
1278 |
1277 |
|
1279 |
1278 |
mesh.mergeEffComponents();
|
1280 |
1279 |
|
... | ... | |
1287 |
1286 |
{
|
1288 |
1287 |
MeshBase mesh = createFacesIvyFace();
|
1289 |
1288 |
|
1290 |
|
float DIST = SQ2*(0.5f-IVY_D);
|
1291 |
|
Static3D center = new Static3D(0.0f,0.0f,-0.0f);
|
|
1289 |
Static3D center = new Static3D(-0.0f,-0.0f,-0.5f);
|
1292 |
1290 |
Static3D[] vertices = new Static3D[2];
|
1293 |
|
vertices[0] = new Static3D(+DIST,-DIST,+0.0f);
|
1294 |
|
vertices[1] = new Static3D(-DIST,+DIST,+0.0f);
|
|
1291 |
vertices[0] = new Static3D(-0.5f,+0.5f,+0.0f);
|
|
1292 |
vertices[1] = new Static3D(+0.5f,-0.5f,+0.0f);
|
1295 |
1293 |
|
1296 |
|
roundCorners(mesh,center,vertices,0.10f,0.30f);
|
|
1294 |
roundCorners(mesh,center,vertices,0.03f,0.10f);
|
1297 |
1295 |
|
1298 |
1296 |
mesh.mergeEffComponents();
|
1299 |
1297 |
mesh.addEmptyTexComponent();
|
Improve the Ivy mesh.