|
|
Am 01.12.2016 um 21:24 schrieb Mike Horvath:
> On 12/1/2016 2:37 PM, clipka wrote:
>> Am 01.12.2016 um 20:26 schrieb clipka:
>>> Am 01.12.2016 um 18:16 schrieb scott:
>>>>> Turns out the core module is already better than I had feared.
>>>>> Still, it
>>>>> has highlighted various issues that still need sorting out -- mostly
>>>>> expected (such as failure to set various default values upon object
>>>>> construction), but a few I did not expect, like some compile-time
>>>>> config
>>>>> settings that don't come with defaults.
>>>>
>>>> I guess you noticed already, but your checkered plane didn't seem to
>>>> work properly either ;-)
>>>
>>> Bah - checkered planes are for wussies. I'm much more worried about the
>>> gamma handling... ;)
>>
>> BTW, here's a demonstration of why I think general-purpose programming
>> languages are ill-suited for scene description:
>>
>> pov::Sphere* pSphere(new pov::Sphere);
>> pSphere->Center = pov::Vector3d(0,0,0);
>> pSphere->Radius = 1;
>> pSphere->Texture = new pov::TEXTURE();
>> pSphere->Texture->Type = pov::PLAIN_PATTERN; // TODO shouldn't
>> need this
>> pSphere->Texture->Pigment = new pov::PIGMENT();
>> pSphere->Texture->Pigment->Type = pov::PLAIN_PATTERN; // TODO
>> shouldn't
>> need this
>> pSphere->Texture->Pigment->colour =
>> pov_base::TransColour(pov_base::MathColour(1));
>> pSphere->Texture->Finish = new pov::FINISH();
>> pSphere->Texture->Finish->Ambient = pov_base::MathColour(0.05);
>> pSphere->Texture->Finish->Diffuse = 0.1;
>> pSphere->Texture->Finish->Brilliance = 1.0;
>> pSphere->Texture->Finish->BrillianceAdjust = 1.0;
>> pSphere->Texture->Finish->Specular = 2.0;
>> pSphere->Texture->Finish->Roughness = 100;
>> pSphere->Texture->Finish->Reflection_Min = pov::MathColour(0.0);
>> pSphere->Texture->Finish->Reflection_Max = pov::MathColour(1.0);
>> pSphere->Texture->Finish->Reflect_Exp = 1.0;
>> pSphere->Texture->Finish->Reflect_Metallic = true;
>> pSphere->Texture->Finish->Reflection_Fresnel = false;
>> pScene->objects.push_back(pSphere);
>>
>> pov::Plane* pPlane(new pov::Plane);
>> pPlane->Normal_Vector = pov::Vector3d(0, 1, 0).normalized();
>> pPlane->Distance = 1;
>> pPlane->Texture = new pov::TEXTURE();
>> pPlane->Texture->Type = pov::PLAIN_PATTERN;
>> pPlane->Texture->Pigment = new pov::PIGMENT();
>> pPlane->Texture->Pigment->Type = pov::GENERIC_PATTERN;
>> pPlane->Texture->Pigment->pattern = pov::PatternPtr(new
>> pov::CheckerPattern);
>> pov::ColourBlendMap* pCheckerMap(new pov::ColourBlendMap);
>> pov::ColourBlendMapEntry CheckerMapEntry;
>> CheckerMapEntry.value = 0;
>> CheckerMapEntry.Vals = pov::ToTransColour(pov_base::RGBFTColour(0, 0,
>> 0, 0, 0));
>> pCheckerMap->Blend_Map_Entries.push_back(CheckerMapEntry);
>> CheckerMapEntry.value = 1;
>> CheckerMapEntry.Vals = pov::ToTransColour(pov_base::RGBFTColour(1, 1,
>> 1, 0, 0));
>> pCheckerMap->Blend_Map_Entries.push_back(CheckerMapEntry);
>> pPlane->Texture->Pigment->Blend_Map =
>> pov::GenericPigmentBlendMapPtr(pCheckerMap);
>> pPlane->Texture->Finish = new pov::FINISH();
>> pPlane->Texture->Finish->Ambient = pov_base::MathColour(0.1);
>> pPlane->Texture->Finish->Diffuse = 0.7;
>> pPlane->Texture->Finish->Brilliance = 1.0;
>> pPlane->Texture->Finish->BrillianceAdjust = 1.0;
>> pPlane->Texture->Finish->Specular = 0.0;
>> pPlane->Texture->Finish->Roughness = 100;
>> pScene->objects.push_back(pPlane);
>>
>> pov::LightSource* pLight(new pov::LightSource);
>> pLight->Center = pov::Vector3d(-1, 1, 1).normalized() * 100;
>> pLight->colour = pov_base::MathColour(0.7);
>> pLight->index = 0; // TODO shouldn't need this
>> pScene->lightSources.push_back(pLight);
>>
>> Yup, that's just a plain simple RSOCP scene.
>>
>
>
> Can't you use shorthand object notation?
>
> pPlane =
> {
> Texture =
> {
> Finish =
> {
> Ambient = pov_base::MathColour(0.1),
> Diffuse = 0.7,
> Brilliance = 1.0,
> }
> }
> }
>
> And so on...
/If/ the language in question supports such a notation, it typically
gets you as far as the point where you want to apply a series of
transformations.
Also, "pov_base::MathColour(0.1)" is a very cumbersome way of writing
"rgb 0.1", and "pov::Vector3d(-1,1,1)" is a very cumbersome way of
writing "<-1,1,1>".
I agree that C++ is probably one of the more ill-suited languages for an
SDL, but other general-purpose languages all suffer from similar
problems to some extent.
Post a reply to this message
|
|