InstanceObject* Picture::buildInstanceObject(char* fileName, BasicObject* obj) { Texture *texture; char *txFileName = (char *)calloc(512, sizeof(char)); int length, width; FileIO* inputFile = new FileIO(fileName, 1); //for reading //scale transformation string line = inputFile->readLine(); //skip this line line = inputFile->readLine(); double sx = atof(line.c_str()); line = inputFile->readLine(); double sy = atof(line.c_str()); line = inputFile->readLine(); double sz = atof(line.c_str()); Matrix* scale = AffineTransforms::scale(sx, sy, sz); //rotation transformations line = inputFile->readLine(); //skip this line line = inputFile->readLine(); double rx = atof(line.c_str()); Matrix* rotX = AffineTransforms::rotateX(rx); line = inputFile->readLine(); double ry = atof(line.c_str()); Matrix* rotY = AffineTransforms::rotateY(ry); line = inputFile->readLine(); double rz = atof(line.c_str()); Matrix* rotZ = AffineTransforms::rotateZ(rz); //translation transformation line = inputFile->readLine(); //skip this line line = inputFile->readLine(); double tx = atof(line.c_str()); line = inputFile->readLine(); double ty = atof(line.c_str()); line = inputFile->readLine(); double tz = atof(line.c_str()); Matrix* translate = AffineTransforms::translate(tx, ty, tz); //material line = inputFile->readLine(); //skip this line line = inputFile->readLine(); double mr = atof(line.c_str()); line = inputFile->readLine(); double mg = atof(line.c_str()); line = inputFile->readLine(); double mb = atof(line.c_str()); Color* mat = new Color(mr, mg, mb); //texture line = inputFile->readLine(); line = inputFile->readLine(); strcpy(txFileName, line.c_str()); line = inputFile->readLine(); width = atoi(line.c_str()); line = inputFile->readLine(); length = atoi(line.c_str()); texture = new Texture(txFileName, width, length); InstanceObject* io = new InstanceObject(obj, texture); texture->setTextureColors(io->readTexture(texture)); //texture->printTextureColors(); io->setDiffuseMaterial(mat); //standard TRS form io->buildTransform(scale); //deletes the matrix when done io->buildTransform(rotX); io->buildTransform(rotY); io->buildTransform(rotZ); io->buildTransform(translate); //Get shininess FileIO* shaderFile = new FileIO("shade.txt", 1); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); line = shaderFile->readLine(); io->setShininess(atof(line.c_str())); delete shaderFile; delete inputFile; return io; }