Esempio n. 1
0
// This method is called to reset the texmap back to its default values.
void Water::Init() {
	// Reset the XYZGen or allocate a new one
	if (xyzGen) 
		xyzGen->Reset();
	else 
		ReplaceReference(0, GetNewDefaultXYZGen());	

	// This replaces the reference to the previous parameter block with
	// a new one.  Note that the previous one is automatically deleted
	// because when the last reference to an item is deleted, MAX deletes
	// the item itself.
//	ReplaceReference(1, CreateParameterBlock(pbdesc, 
//		PB_LENGTH, WATER_PB_VERSION));

//	if (paramDlg) 
//		paramDlg->pmap->SetParamBlock(pblock);

	// Set the inital parameters
	SetColor(0, DEFAULT_COLOR1, TimeValue(0));
	SetColor(1, DEFAULT_COLOR2, TimeValue(0));
	SetRandSeed(0x75cf);
	SetNum(DEFAULT_NUM_WAVESETS, TimeValue(0));
    RegisterDistanceDefault(_T("Wave Params"), _T("Size"), DEFAULT_WAVE_RADIUS, IN_TO_M(DEFAULT_WAVE_RADIUS));
    float size = GetDistanceDefault(_T("Wave Params"), _T("Size"));
    SetSize(size, TimeValue(0));

    RegisterDistanceDefault(_T("Wave Params"), _T("Len Min"), DEFAULT_WAVE_LEN_MIN, IN_TO_M(DEFAULT_WAVE_LEN_MIN));
    float lenMin = GetDistanceDefault(_T("Wave Params"), _T("Len Min"));
	SetLenMin(lenMin, TimeValue(0));

    RegisterDistanceDefault(_T("Wave Params"), _T("Len Max"), DEFAULT_WAVE_LEN_MAX, IN_TO_M(DEFAULT_WAVE_LEN_MAX));
    float lenMax = GetDistanceDefault(_T("Wave Params"), _T("Len Max"));
	SetLenMax(lenMax, TimeValue(0));

	SetAmp(1.0f, TimeValue(0));
	SetPhase(0.0f, TimeValue(0));

	ReInit();

	type = 0;
	// Set the validity interval of the texture to empty
	texValidity.SetEmpty();
}
Esempio n. 2
0
void init() {
	SetRandSeed((unsigned int)time(0));
	int nSample=2500;
	matSampler=new MultiJittered(nSample,1024,1);

	emiMat=new Emissive();
	emiMat->ls=40.0;
	planeMat=new Matte();
	planeMat->diffuseBRDF->setSampler(matSampler);
	COLOR3D color(0.9,0.9,0.9);
	planeMat->setCd(color);
	planeMat->setKd(0.75);
	redMat=new Matte();
	redMat->diffuseBRDF->setSampler(matSampler);
	color.g=0.1; color.b=0.1;
	redMat->setCd(color);
	redMat->setKd(0.75);
	greenMat=new Matte();
	greenMat->diffuseBRDF->setSampler(matSampler);
	color.r=0.1; color.g=0.9; color.b=0.1;
	greenMat->setCd(color);
	greenMat->setKd(0.75);
	sphereMat=new Matte();
	sphereMat->diffuseBRDF->setSampler(matSampler);
	COLOR3D sphereColor(0.9,0.9,0.2);
	sphereMat->setCd(sphereColor);
	sphereMat->setKd(0.75);

	InitWorld();
	world->nSamples=nSample;
	world->maxDepth=5;
	RayCast* tracer=new RayCast();
	world->setTracer(tracer);
	delete tracer;

	VECTOR3D eye(0,-50,400),dir(0,0,-1);
	camera=new Camera(eye,dir,0);

	VECTOR3D pos(-50,250,0),va(0,0,-100),vb(100,0,0);

	Rect* lightRec=new Rect(pos,va,vb);
	lightRec->setMaterial(emiMat);
	lightRec->setSampler(matSampler);
	world->addObject(lightRec);

	AreaLight* light=new AreaLight();
	light->setObject(lightRec);
	world->addLight(light);

	pos.x=-200; pos.y=-200; pos.z=-200; va.z=350,vb.x=400;
	Rect* ground=new Rect(pos,va,vb);
	ground->setMaterial(planeMat);
	world->addObject(ground);

	pos.x=-200; pos.y=250; pos.z=150; va.z=-350,vb.x=400;
	Rect* top=new Rect(pos,va,vb);
	top->setMaterial(planeMat);
	world->addObject(top);

	pos.x=-200; pos.y=-200; pos.z=-200; va.x=400; va.y=0; va.z=0; vb.x=0; vb.y=450; vb.z=0;
	Rect* far=new Rect(pos,va,vb);
	far->setMaterial(planeMat);
	world->addObject(far);

	pos.x=-200; pos.y=-200; pos.z=150; va.x=0; va.y=0; va.z=-350; vb.x=0; vb.y=450; vb.z=0;
	Rect* left=new Rect(pos,va,vb);
	left->setMaterial(redMat);
	world->addObject(left);

	pos.x=200; pos.y=-200; pos.z=-200; va.x=0; va.y=0; va.z=350; vb.x=0; vb.y=450; vb.z=0;
	Rect* right=new Rect(pos,va,vb);
	right->setMaterial(greenMat);
	world->addObject(right);

	pos.x=100; pos.y=-150; pos.z=-50;
	Sphere* sphere=new Sphere(pos,50);
	sphere->setMaterial(sphereMat);
	world->addObject(sphere);
}