Text archives Help
- From: abhinav@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r901 - in trunk/fox/afr_demo: Engine/ImageTraversers StandAlone
- Date: Tue, 7 Feb 2006 18:18:40 -0700 (MST)
Author: abhinav
Date: Tue Feb 7 18:18:38 2006
New Revision: 901
Modified:
trunk/fox/afr_demo/Engine/ImageTraversers/AFRImageTraverser.cc
trunk/fox/afr_demo/Engine/ImageTraversers/GSTAFRImageTraverser.cc
trunk/fox/afr_demo/StandAlone/afr.cc
Log:
removed most compilation error is porting afr cde into manta trunk
Modified: trunk/fox/afr_demo/Engine/ImageTraversers/AFRImageTraverser.cc
==============================================================================
--- trunk/fox/afr_demo/Engine/ImageTraversers/AFRImageTraverser.cc
(original)
+++ trunk/fox/afr_demo/Engine/ImageTraversers/AFRImageTraverser.cc Tue
Feb 7 18:18:38 2006
@@ -2,7 +2,7 @@
#include <Engine/ImageTraversers/AFRImageTraverser.h>
#include <Model/Groups/KDTree.h>
-#include <Model/Cameras/PinholeCamera.h>
+#include <fox/afr_demo/Model/Cameras/AfrPinholeCamera.h>
using namespace Manta;
using namespace Manta::Afr;
@@ -44,25 +44,26 @@
}
if(tv!=NULL && validinfo[i])
{
- const Kdtree::KDTree *kdtree = dynamic_cast<const Kdtree::KDTree *>(
+ const Kdtree::KDTreeDebug *kdtree = dynamic_cast<const
Kdtree::KDTreeDebug *>(
rays.getHitPrimitive(i) );
if (kdtree) {
+ int face_index =
rays.scratchpad<Kdtree::KDTree::ScratchPadInfo>(i).hit_index;
const Kdtree::Triangle &triangle =
-
kdtree->getFace(rays.scratchpad<Kdtree::KDTree::ScratchPadInfo>(i).face_index
);
+ kdtree->getFace( face_index );
// now project the triangle into imagespace
const Point p1(triangle.v[0].x(), triangle.v[0].y(),
triangle.v[0].z());
const Point p2(triangle.v[1].x(), triangle.v[1].y(),
triangle.v[1].z());
const Point p3(triangle.v[2].x(), triangle.v[2].y(),
triangle.v[2].z());
Point rp;
- rp = context.camera->project(p1);
+ rp = ((AFRPinholeCamera*)context.camera)->project(p1);
tv[i].v1[0] = rp.x()*xres;
tv[i].v1[1] = rp.y()*yres;
tv[i].v1[2] = rp.z();
- rp = context.camera->project(p2);
+ rp = ((AFRPinholeCamera*)context.camera)->project(p2);
tv[i].v2[0] = rp.x()*xres;
tv[i].v2[1] = rp.y()*yres;
tv[i].v2[2] = rp.z();
- rp = context.camera->project(p3);
+ rp = ((AFRPinholeCamera*)context.camera)->project(p3);
tv[i].v3[0] = rp.x()*xres;
tv[i].v3[1] = rp.y()*yres;
tv[i].v3[2] = rp.z();
Modified: trunk/fox/afr_demo/Engine/ImageTraversers/GSTAFRImageTraverser.cc
==============================================================================
--- trunk/fox/afr_demo/Engine/ImageTraversers/GSTAFRImageTraverser.cc
(original)
+++ trunk/fox/afr_demo/Engine/ImageTraversers/GSTAFRImageTraverser.cc Tue
Feb 7 18:18:38 2006
@@ -4,7 +4,7 @@
#include <Interface/Renderer.h>
#include <Interface/Context.h>
#include <Interface/Fragment.h>
-#include <Interface/Camera.h>
+#include <fox/afr_demo/Model/Cameras/AfrPinholeCamera.h>
#include <Interface/Image.h>
#include <Interface/LoadBalancer.h>
#include <Interface/PixelSampler.h>
@@ -15,7 +15,7 @@
#include <Core/Util/NotFinished.h>
#include <Core/Thread/Mutex.h>
#include <Core/XUtils/XHelper.h>
-
+#include <Interface/Fragment.h>
#include <SCIRun/Core/Thread/Time.h>
#include <cmath>
@@ -188,18 +188,18 @@
// have flag for camera and dump the camera
fprintf(textstreamfile[myID],"\n\nbegin_camera\n");
// print camera to file
- context.camera->writeToFile(textstreamfile[myID]);
+ ((AFRPinholeCamera*)context.camera)->writeToFile(textstreamfile[myID]);
}
void GSTAFRImageTraverser::setupBegin(SetupContext& context, int
numChannels) {
if (context.proc == 0)
context.loadBalancer->setupBegin(context, numChannels);
-
- if (getDebugWindow()) {
- context.setMultipleGLWindows();
- getDebugWindow()->createStatsWin( context );
- }
+// multiple window stuff is commented. Abe plans to do it with fox later
+// if (getDebugWindow()) {
+// context.setMultipleGLWindows();
+// getDebugWindow()->createStatsWin( context );
+// }
}
@@ -209,8 +209,9 @@
return;
// Specify that the rendering pipeline should use only one image buffer.
- if (getDebugWindow())
- context.setMultipleGLWindows();
+ // multiple window stuff is commented. Abe plans to do it with fox later
+ //if (getDebugWindow())
+ // context.setMultipleGLWindows();
numFrontXhairSamples = 5;
context.constrainPipelineDepth(1,1); // single buffer mode is set here
@@ -380,7 +381,8 @@
int flags = RayPacket::HaveImageCoordinates | RayPacket::ConstantEye;
int depth = 0;
RayPacketData raydata;
- RayPacket rays(raydata, size, depth, flags);
+ Fragment f;
+ RayPacket rays(raydata, 0, size, depth, flags);
int i, j;
int start = lastxhairindex[myID]+1 ;
const static double offset[5][2] = {
@@ -408,7 +410,10 @@
+ offset[i][1])/(double)xres);
}
// Specify the pixel.
- rays.setPixel((j-start)*5+i, 0, px, py, &color[myID][(j-start)*5+i]);
+ int raypos = (j-start)*5+i;
+ rays.setPixel(raypos, 0, px, py);
+ f.addElement((int)px, (int)py, 0);
+ rays.setColor(raypos, color[myID][raypos]);
}
}
/////////////////////////////////////////////////////////////////////////////
@@ -420,17 +425,15 @@
// okay now copy from fragment to temporalQ
for(j=start; j<=sscount; j++) {
for(i=0; i<5; i++) {
- RayPacket::Element& re = rays.get((j-start)*5+i);
-
- RGBColor tempcol = color[myID][(j-start)*5+i].convertRGB();
- Point p = re.hitPosition;
+ int rayindex = (j-start)*5+i;
+ RGBColor tempcol = color[myID][rayindex].convertRGB();
+ Point p = rays.getHitPosition(rayindex);
float nsx, nsy;
nsx = newSampleSet[myID][j].sample[TEMPORAL_SAMPLE].viewCoord[0] +
offset[i][0];
nsy = newSampleSet[myID][j].sample[TEMPORAL_SAMPLE].viewCoord[1] +
offset[i][1];
- newSampleSet[myID][j].set( i, nsx, nsy, t, p.x(), p.y(),
p.z(),tempcol.r(), tempcol.g(), tempcol.b(), validinfo[(j-start)*5+i] );
-
- image->set( (int)(nsx), (int)(nsy), color[myID][(j-start)*5+i] );
+ newSampleSet[myID][j].set( i, nsx, nsy, t, p.x(), p.y(),
p.z(),tempcol.r(), tempcol.g(), tempcol.b(), validinfo[rayindex]);
+ f.setColor(rayindex, color[myID][rayindex]);
}
newSampleSet[myID][j].computeGradients(t);
// add the sample to the corresponding kdtree
@@ -438,6 +441,7 @@
samples_done[myID].addFive();
}
+ image->set(f);
//cout << "done one xhairBlock" << endl;
lastxhairindex[myID] = sscount;
return size/5;
@@ -496,7 +500,8 @@
// Create a ray packet
int depth = 0;
RayPacketData raydata;
- RayPacket rays(raydata, size, depth, flags);
+ Fragment frag;
+ RayPacket rays(raydata, 0, size, depth, flags);
int cx, cy, ox, oy;
int tindex = kdtree[myMasterID].getRandomTile(myRandomNumber[myID]);
@@ -563,7 +568,9 @@
samples_done[myID].addOne();
// Specify the position and color pointer for the packet element.
- rays.setPixel(i, 0, px, py, &color[myID][i]);
+ rays.setPixel(i, 0, px, py);
+ frag.addElement((int)px, (int)py, 0);
+ rays.setColor(i, color[myID][i]);
coherenceCount++;
if(!spatialCoherence ||
coherenceCount>=6)//kdtree[myID].getTileSize(tindex)/10)
{
@@ -583,21 +590,22 @@
int fi = (f+i);
- RayPacket::Element& re = rays.get(i);
- RGBColor tempcol = color[myID][i].convertRGB();
+ RGBColor tempcol = color[myID][i].convertRGB();
newSample[myID][fi].c[0] = tempcol.r();
newSample[myID][fi].c[1] = tempcol.g();
newSample[myID][fi].c[2] = tempcol.b();
- newSample[myID][fi].worldCoord[0] = re.hitPosition.x();
- newSample[myID][fi].worldCoord[1] = re.hitPosition.y();
- newSample[myID][fi].worldCoord[2] = re.hitPosition.z();
+ Point hitpos = rays.getHitPosition(i);
+ newSample[myID][fi].worldCoord[0] = hitpos.x();
+ newSample[myID][fi].worldCoord[1] = hitpos.y();
+ newSample[myID][fi].worldCoord[2] = hitpos.z();
newSample[myID][fi].valid = validinfo[i];
newSample[myID][fi].setgrads(xgrad, ygrad, tgrad);
// newSample[i].print();
/////////////////////////////////////////////////////////////////////////////
// Skip reconstruction and set the image pixel.
- image->set((int)(newSample[myID][fi].viewCoord[0]),
(int)(newSample[myID][fi].viewCoord[1]), color[myID][i]);
+ frag.setColor(i, color[myID][i]);
}
+ image->set(frag);
}
for(i=0; i<csize; i++)
{
@@ -680,7 +688,7 @@
{
const Point p(px, py, pz);
Point rp;
- rp = context.camera->project(p);
+ rp = ((AFRPinholeCamera*)context.camera)->project(p);
sp->viewCoord[0] = rp.x()*xres;
sp->viewCoord[1] = rp.y()*yres;
sp->viewCoord[2] = rp.z();
Modified: trunk/fox/afr_demo/StandAlone/afr.cc
==============================================================================
--- trunk/fox/afr_demo/StandAlone/afr.cc (original)
+++ trunk/fox/afr_demo/StandAlone/afr.cc Tue Feb 7 18:18:38 2006
@@ -19,7 +19,7 @@
#include <sgi_stl_warnings_on.h>
#include <Model/Cameras/CameraHistory.h>
-#include <Model/Cameras/PinholeCamera.h>
+#include <fox/afr_demo/Model/Cameras/AFRPinholeCamera.h>
using namespace std;
using namespace Manta;
@@ -96,9 +96,9 @@
BenchHelper(RTRTInterface* rtrt, long numFrames);
void start(int, int);
void stop(int, int);
-
+
private:
- RTRTInterface* rtrt;
+ RTRTInterface* rtrt;
double startTime;
long numFrames;
};
@@ -139,16 +139,16 @@
#if HAVE_IEEEFP_H
fpsetmask(FP_X_OFL|FP_X_DZ|FP_X_INV);
#endif
-
-
+
+
// Copy args into a vector<string>
vector<string> args;
for(int i=1;i<argc;i++)
args.push_back(argv[i]);
-
+
try {
RTRTInterface* rtrt = Manta::Afr::createAFRPipeline();
-
+
if(getenv("MANTA_SCENEPATH"))
rtrt->setScenePath(getenv("MANTA_SCENEPATH"));
else
@@ -167,33 +167,33 @@
if(!rtrt->selectShadowAlgorithm("hard"))
throw InternalError("default shadow algorithm not found", __FILE__,
__LINE__ );
- Camera* currentCamera = new CameraHistory<PinholeCamera>(
rtrt->createCamera("pinhole(-eye 3 3 2 -lookat 0 0 0.3 -up 0 0 1 -fov 60)") );
+ Camera* currentCamera = new CameraHistory<AFRPinholeCamera>(
rtrt->createCamera("afrpinhole(-eye 3 3 2 -lookat 0 0 0.3 -up 0 0 1 -fov
60)") );
if(!currentCamera)
throw InternalError("cannot create default camera", __FILE__, __LINE__
);
int xres = 512, yres = 512;
bool channelCreated=false;
bool haveUI = false;
-
+
int argc = static_cast<int>(args.size());
for(int i=0;i<argc;i++){
string arg = args[i];
if(arg == "-help"){
- usage(rtrt);
+ usage(rtrt);
} else if(arg == "-bench"){
#if 0
- long numFrames = 100;
- long warmup = 10;
- if(getLongArg(i, args, numFrames)){
- getLongArg(i, args, warmup);
- }
- BenchHelper* b = new BenchHelper(rtrt,
numFrames);
- // Ask for two callbacks, one at frame
"warmup", and one at
- // frame warmup+numFrames
-
rtrt->addOneShotCallback(RTRTInterface::Absolute, warmup,
-
Callback::create(b,
&BenchHelper::start));
-
rtrt->addOneShotCallback(RTRTInterface::Absolute, warmup+numFrames,
-
Callback::create(b,
&BenchHelper::stop));
+ long numFrames = 100;
+ long warmup = 10;
+ if(getLongArg(i, args, numFrames)){
+ getLongArg(i, args, warmup);
+ }
+ BenchHelper* b = new BenchHelper(rtrt, numFrames);
+ // Ask for two callbacks, one at frame "warmup", and one at
+ // frame warmup+numFrames
+ rtrt->addOneShotCallback(RTRTInterface::Absolute, warmup,
+ Callback::create(b, &BenchHelper::start));
+ rtrt->addOneShotCallback(RTRTInterface::Absolute, warmup+numFrames,
+ Callback::create(b, &BenchHelper::stop));
#endif
// Number of outer loops to measure after initialization.
long outer_loops;
@@ -208,19 +208,19 @@
// Check to see if all threads are initialized in 100 "frames"
rtrt->addOneShotCallback(RTRTInterface::Relative, 10,
-
Callback::create(b,
&Afr::BenchHelper::tryStart));
+ Callback::create(b,
&Afr::BenchHelper::tryStart));
} else if(arg == "-camera"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- currentCamera = new
CameraHistory<PinholeCamera>( rtrt->createCamera(s) );
- if(!currentCamera){
- cerr << "Error creating camera: " <<
s << ", available cameras are:\n";
- printList(cerr, rtrt->listCameras());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ currentCamera = new CameraHistory<AFRPinholeCamera>(
rtrt->createCamera(s) );
+ if(!currentCamera){
+ cerr << "Error creating camera: " << s << ", available cameras
are:\n";
+ printList(cerr, rtrt->listCameras());
+ exit(1);
+ }
} else if(arg == "-idlemode"){
string s;
if(!getStringArg(i, args, s))
@@ -231,47 +231,47 @@
exit(1);
}
} else if(arg == "-imagedisplay"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->createChannel(s, currentCamera,
false, xres, yres)){
- cerr << "Invalid image display: " <<
s << ", available image displays are:\n";
- printList(cerr,
rtrt->listImageDisplays());
- exit(1);
- }
- channelCreated=true;
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->createChannel(s, currentCamera, false, xres, yres)){
+ cerr << "Invalid image display: " << s << ", available image
displays are:\n";
+ printList(cerr, rtrt->listImageDisplays());
+ exit(1);
+ }
+ channelCreated=true;
} else if(arg == "-imagetraverser"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectImageTraverser(s)){
- cerr << "Invalid image traverser: "
<< s << ", available image traversers are:\n";
- printList(cerr,
rtrt->listImageTraversers());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectImageTraverser(s)){
+ cerr << "Invalid image traverser: " << s << ", available image
traversers are:\n";
+ printList(cerr, rtrt->listImageTraversers());
+ exit(1);
+ }
} else if(arg == "-imagetype"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectImageType(s)){
- cerr << "Invalid image type: " << s
<< ", available image types are:\n";
- printList(cerr,
rtrt->listImageTypes());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectImageType(s)){
+ cerr << "Invalid image type: " << s << ", available image types
are:\n";
+ printList(cerr, rtrt->listImageTypes());
+ exit(1);
+ }
} else if(arg == "-loadbalancer"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectLoadBalancer(s)){
- cerr << "Invalid load balancer: " <<
s << ", available load balancers are:\n";
- printList(cerr,
rtrt->listLoadBalancers());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectLoadBalancer(s)){
+ cerr << "Invalid load balancer: " << s << ", available load
balancers are:\n";
+ printList(cerr, rtrt->listLoadBalancers());
+ exit(1);
+ }
} else if(arg == "-np"){
- long np;
- if(!getLongArg(i, args, np))
- usage(rtrt);
- rtrt->changeNumWorkers(static_cast<int>(np));
+ long np;
+ if(!getLongArg(i, args, np))
+ usage(rtrt);
+ rtrt->changeNumWorkers(static_cast<int>(np));
} else if(arg == "-timemode"){
string s;
RTRTInterface::TimeMode tm;
@@ -293,70 +293,70 @@
}
rtrt->setTimeMode(tm,rate);
} else if(arg == "-pixelsampler"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectPixelSampler(s)){
- cerr << "Invalid pixel sampler: " <<
s << ", available pixel samplers are:\n";
- printList(cerr,
rtrt->listPixelSamplers());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectPixelSampler(s)){
+ cerr << "Invalid pixel sampler: " << s << ", available pixel
samplers are:\n";
+ printList(cerr, rtrt->listPixelSamplers());
+ exit(1);
+ }
} else if(arg == "-renderer"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectRenderer(s)){
- cerr << "Invalid renderer: " << s <<
", available renderers are:\n";
- printList(cerr,
rtrt->listRenderers());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectRenderer(s)){
+ cerr << "Invalid renderer: " << s << ", available renderers
are:\n";
+ printList(cerr, rtrt->listRenderers());
+ exit(1);
+ }
} else if(arg == "-res"){
- if(!getResolutionArg(i, args, xres, yres)){
- cerr << "Error parsing resolution: "
<< args[i+1] << '\n';
- usage(rtrt);
- }
+ if(!getResolutionArg(i, args, xres, yres)){
+ cerr << "Error parsing resolution: " << args[i+1] << '\n';
+ usage(rtrt);
+ }
} else if(arg == "-scene"){
- if(rtrt->haveScene())
- cerr << "WARNING: multiple scenes
specified, will use last one\n";
- string scene;
- if(!getStringArg(i, args, scene))
- usage(rtrt);
- if(!rtrt->readScene(scene)){
- cerr << "Error reading scene: " <<
scene << '\n';
- exit(1);
- }
+ if(rtrt->haveScene())
+ cerr << "WARNING: multiple scenes specified, will use last one\n";
+ string scene;
+ if(!getStringArg(i, args, scene))
+ usage(rtrt);
+ if(!rtrt->readScene(scene)){
+ cerr << "Error reading scene: " << scene << '\n';
+ exit(1);
+ }
} else if(arg == "-shadows"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- if(!rtrt->selectShadowAlgorithm(s)){
- cerr << "Invalid shadow algorithm: "
<< s << ", available shadow algorithms are:\n";
- printList(cerr,
rtrt->listShadowAlgorithms());
- exit(1);
- }
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ if(!rtrt->selectShadowAlgorithm(s)){
+ cerr << "Invalid shadow algorithm: " << s << ", available shadow
algorithms are:\n";
+ printList(cerr, rtrt->listShadowAlgorithms());
+ exit(1);
+ }
} else if(arg == "-ui"){
- string s;
- if(!getStringArg(i, args, s))
- usage(rtrt);
- UserInterface* ui =
rtrt->createUserInterface(s);
- if(!ui){
- cerr << "Unknown user interface: " <<
s << ", available user interfaces are:\n";
- printList(cerr,
rtrt->listUserInterfaces());
- exit(1);
- }
- ui->startup();
- haveUI = true;
+ string s;
+ if(!getStringArg(i, args, s))
+ usage(rtrt);
+ UserInterface* ui = rtrt->createUserInterface(s);
+ if(!ui){
+ cerr << "Unknown user interface: " << s << ", available user
interfaces are:\n";
+ printList(cerr, rtrt->listUserInterfaces());
+ exit(1);
+ }
+ ui->startup();
+ haveUI = true;
} else {
- cerr << "Unknown argument: " << arg << '\n';
- usage(rtrt);
+ cerr << "Unknown argument: " << arg << '\n';
+ usage(rtrt);
}
}
if(!haveUI){
UserInterface* ui = rtrt->createUserInterface("X");
if(!ui){
- cerr << "Cannot find default user interface:
X, available user interfaces are:\n";
- printList(cerr, rtrt->listUserInterfaces());
- exit(1);
+ cerr << "Cannot find default user interface: X, available user
interfaces are:\n";
+ printList(cerr, rtrt->listUserInterfaces());
+ exit(1);
}
ui->startup();
}
@@ -373,11 +373,11 @@
if(e.stackTrace())
cerr << "Stack trace: " << e.stackTrace() << '\n';
exit(1);
-
+
} catch (std::exception e){
cerr << "Caught std exception: " << e.what() << '\n';
exit(1);
-
+
} catch(...){
cerr << "Caught unknown exception\n";
exit(1);
@@ -405,15 +405,15 @@
scene->setBackground(new
ConstantBackground(ColorDB::getNamedColor("SkyBlue3")*0.5));
Material* red=new Phong(Color(RGBColor(.6,0,0)),
Color(RGBColor(.6,.6,.6)), 32, 0.4);
-
+
Material* plane_matl = new Phong(new
CheckerTexture<Color>(Color(RGBColor(.6,.6,.6)),
-
Color(RGBColor(0,0,0)),
-
Vector(1,0,0),
-
Vector(0,1,0)),
-
new
Constant<Color>(Color(RGBColor(.6,.6,.6))),
-
32,
-
new
CheckerTexture<ColorComponent>
+
Color(RGBColor(0,0,0)),
+ Vector(1,0,0),
+ Vector(0,1,0)),
+ new
Constant<Color>(Color(RGBColor(.6,.6,.6))),
+ 32,
+ new CheckerTexture<ColorComponent>
((ColorComponent)0.2,
(ColorComponent)0.5,
Vector(1,0,0),
@@ -421,14 +421,14 @@
Group* world = new Group();
Primitive* floor = new Parallelogram(plane_matl, Point(-20,-20,0),
-
Vector(40,0,0), Vector(0,40,0));
+ Vector(40,0,0), Vector(0,40,0));
// Setup world-space texture coordinates for the checkerboard floor
UniformMapper* uniformmap = new UniformMapper();
floor->setTexCoordMapper(uniformmap);
world->add(floor);
world->add(new Sphere(red, Point(0,0,1.2), 1.0));
scene->setObject(world);
-
+
LightSet* lights = new LightSet();
lights->add(new PointLight(Point(0,5,8), Color(RGBColor(.6,.1,.1))));
lights->add(new PointLight(Point(5,0,8), Color(RGBColor(.1,.6,.1))));
- [MANTA] r901 - in trunk/fox/afr_demo: Engine/ImageTraversers StandAlone, abhinav, 02/07/2006
Archive powered by MHonArc 2.6.16.