int main(int argc, char **argv) { IndentWriter writer; Component2D circle(Circle::create(1.0).translate(2, 0, 0)); Component toroid(circle.rotateExtrudedCopy()); writer << toroid; Component toroid2(Toroid(2.0, 1.0)); writer << toroid2; std::cout << writer; return 0; }
void ProtoController::init() { //setLight(0, { 0, 0, 600 }, { 1, 1, 1 }); shadowsOn(); setShadowSharpness(256, 256); std::vector<Vec3> pts; float theta = 0; for (int i = 0; i < 30; i++) { float r = random(14, 30); pts.push_back(Vec3f(sin(theta) * r, -60 + i * 4, cos(theta) * r)); theta += TWO_PI * 4 / 30; } Spline3 path(pts, 3, false, 1.0); tube = Tube(path, 18, 12, ProtoTransformFunction(ProtoTransformFunction::SINUSOIDAL, Tup2(.25, .9), 27), true, "gold01.jpg"); tube.setDiffuseMaterial({ 1.0f, 1, 1 }); tube.setAmbientMaterial(0.15f); tube.setBumpMap("gold01.jpg", .65f); //tube.loadBumpMapTexture("vascular3_normal2.jpg"); tube.setTextureScale({ 1, 0.1f }); tube.setSpecularMaterial({ 1, 1, 1 }); tube.setShininess(5); t = Toroid({ 0 }, { 0 }, { 0 }, { 1, 1, 1, 1 }, 36, 12, 400, 25, "vascular3.jpg", { .03f, .03f }); t.setSpecularMaterial({ 1, 1, 1 }); t.setShininess(46); t.setBumpMap("vascular3.jpg", .65f); plane = ProtoPlane({}, {}, Dim2f(0, 0), Col4f(1), 1, 1, "linen.jpg"); plane.setDiffuseMaterial({ 1, 1, 1, 1 }); //plane.setBumpMap("woodPlank.jpg", .55); plane.loadBumpMapTexture("crinkled_paper_normal.jpg"); plane.setTextureScale({ .5f, .5f }); plane.setSpecularMaterial({ 1, 1, 1 }); plane.setShininess(15); }
void ProtoRootBall02::init() { //170, 150 // set Materials for composite objects - or setup as multiple inheritance/interface rootBallCore = RootBall(Vec3f(), Vec3f(), Dim3f(2.55f), Col4f(.9f), 1, 30, .2, Tup2f(.5, 2.25), "shipPlate_yellow.jpg", 8); TransformFunction t1 = TransformFunction(TransformFunction::SINUSOIDAL, Tup2f(.2f, .75f), 3); // local, so can't be sent as reference rootBallCore.setTransformFunction(t1); //rootBall = RootBall(Vec3f(), Vec3f(), Dim3f(1.345f), Col4f(.9f), 1, 40, .2, Tup2f(.2, 3), "vascular3.jpg", 1); TransformFunction t2 = TransformFunction(TransformFunction::SINUSOIDAL, Tup2f(.14f, .22f), 80); // local, so can't be sent as reference //rootBall.setTransformFunction(t2); //std::vector<Tup4v> vs = rootBall.getGeomData(); // export geometry data to //std::vector<Tup4v> vs; //std::vector<Tup4v> temp = rootBallCore.getGeomData(); //vs.insert(vs.end(), temp.begin(), temp.end()); //std::vector<Tup4v> temp2 = rootBall.getGeomData(); //vs.insert(vs.end(), temp2.begin(), temp2.end()); //export(vs, STL); // wall plane = GroundPlane(Vec3(), Vec3(), Dim2f(8, 7), Col4f(1, 1, 1, 1), 1, 1, "leather2.jpg"); //plane.textureOn(); plane.setBumpMap("leather2.jpg"); //plane.loadBumpMapTexture("shipPlate_normal.jpg"); plane.setTextureScale(Vec2f(.5)); //plane.setAmbientMaterial(Col4f(.02, .02, .02, 1.0)); plane.setSpecularMaterial(Col4f(1, .9, 1, 1.0)); plane.setShininess(4); //trace("GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS =", GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS); // ground ground = GroundPlane(Vec3(), Vec3(), Dim2f(8, 7), Col4f(1, 1, 1, 1), 1, 1, "pink2.jpg"); //plane.textureOn(); ground.setBumpMap("pink2.jpg"); //plane.loadBumpMapTexture("shipPlate_normal.jpg"); ground.setTextureScale(Vec2f(.25)); //plane.setAmbientMaterial(Col4f(.02, .02, .02, 1.0)); ground.setSpecularMaterial(Col4f(1, 1, 1, 1.0)); ground.setShininess(3); //trace("GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS =", GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS); std::string texs[] = { "pebbles.jpg", "gold_foil2.jpg", "vascular.jpg", "greenCrocSkin.jpg", "pink2.jpg", "metal_screwHeads.jpg", "woodPlank.jpg", "metal_blue.jpg", "shipPlate_yellow.jpg", "reptile2_invert.jpg", "corroded_metal.jpg", "giraffe.jpg", "shipPlate.jpg", "metal_grate.jpg" }; for (int i = 0; i < W*H*D; ++i){ int sub = int(random(14)); toroids[i] = Toroid(Vec3f(), Vec3f(random(45), random(45), random(45)), Dim3f(3, 3, 3), Col4f(.5, .5, .5, 1), 12, 12, 3, 1.2, texs[sub]); toroids[i].setBumpMap(texs[sub]); //toroids[i].setBumpMap("grime.jpg"); toroids[i].setDiffuseMaterial(Col4f(.65, .75, 1, 1.0)); toroids[i].setSpecularMaterial(Col4f(1, 1, 1, 1.0)); toroids[i].setTextureScale(Vec2f(random(.25, 8.5))); toroids[i].setShininess(int(random(15, 40))); } }