Exemple #1
0
void SceneObject::sumEnergyToSingleEnergy()
{
	if (this->isVolumetric() && countHashGrid)
	{
		countHashGrid->sumEnergyToSingleEnergy();
		return;
	}
	totalEnergy = energyDensity[getTriangleNum() - 1];
	for (int i = getTriangleNum() - 1; i >= 1; i--)
		energyDensity[i] -= energyDensity[i - 1];
}
Exemple #2
0
void SceneObject::singleEnergyToSumEnergy()
{
	if (this->isVolumetric() && countHashGrid)
	{
		countHashGrid->singleEnergyToSumEnergy();
		return;
	}
	for (int i = 1; i < getTriangleNum(); i++)
		energyDensity[i] += energyDensity[i - 1];
	totalEnergy = energyDensity[getTriangleNum() - 1];
}
Exemple #3
0
void SceneObject::preprocessOtherSampler()
{
	totalEnergy = 0.f;
	energyDensity.clear();
	energyDensity.resize(getTriangleNum());
	for (int i = 0; i < getTriangleNum(); i++)
	{
		energyDensity[i] = 0.f;
		areaValues.push_back(getTriangleArea(i));
	}
}
	void AbstractObject::prepareForSurfaceSampling(){
		float areaValue = 0;
		for(uint i = 0; i < getTriangleNum(); i++){
			areaValue += getTriangleArea(i);
			areaThreshold.push_back(areaValue);
		}
		boundArea = areaValue;
	}
Exemple #5
0
void SceneObject::preprocessEmissionSampler()
{
	totalArea = weight = 0.f;
	for(unsigned k=0; k<getTriangleNum(); k++)
	{
		totalArea += getTriangleArea(k);
		areaValues.push_back(totalArea);
	}
	weight = totalArea;
}
Exemple #6
0
void SceneObject::scaleEnergyDensity(const float scale)
{
	if (this->isVolumetric() && countHashGrid)
	{
		countHashGrid->scaleEnergyDensity(scale);
		return;
	}
	totalEnergy *= scale;
	for (int i = 0; i < getTriangleNum(); i++)
		energyDensity[i] *= scale;
}