Raytracing Perspective Glitches?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 06/05/2005 at 05:09, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   8.5 
Platform:   Windows  ;   
Language(s) :     C++  ;

---------
Morning!

I'm currently testing a few shader ideas out using the TraceGeometry command in the VolumeData struct, but am having some weird results. When I transform the current ray for objects near the camera they seem skewed like the scene is being viewed thru a fish-eye lens! Is this a perspective effect, and has anyone experienced this at all?

Ta

Dan

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/05/2005 at 01:14, xxxxxxxx wrote:

no, haven´t experienced this yet.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/05/2005 at 02:35, xxxxxxxx wrote:

Oh, ok. Might be something to do with the way I'm transforming the ray I guess?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/05/2005 at 06:06, xxxxxxxx wrote:

Without some more information we'd all be guessing ;-) maybe you could post a code snip or at least what transform you are doing to the ray.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/05/2005 at 07:40, xxxxxxxx wrote:

Hi David

I maybe be doing something really stupid when transforming the ray, perhaps my 3d maths need polishing up a bit! I'll probably need to go into some depth to explain what is going wrong, and you contactable? Or could you mail me please?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/05/2005 at 07:49, xxxxxxxx wrote:

You would be better off posting here, this way someone with the right experience might know an answer plus it helps everyone else if they come across a similar problem.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/05/2005 at 10:24, xxxxxxxx wrote:

Ok fair enough. Basically to summarise in a reasonable amount of code ...

The code below gets the current ray, transforms it to another objects inverted global matrix (got using ->GetMg), then checks whether the new ray intersects or not (so if hit, col=white, else col=black) - see below :

[CODE}
Ray *ray, invray;

ray = vd->ray;
Vector pos = SV(ray->p);
Vector dir = SV(ray->v);
Vector newpos = globalMat * pos;
Vector newdir = globalMat * dir;
invray.p = LV(newpos);
invray.v = LV(newdir);

vd->TraceGeometry(&invray;, MAXREAL, 0, &p;, &n;, &hit;);

if(hit)
vd->col = Vector(1.0, 1.0, 1.0);
else
vd->col = Vector(0.0, 0.0, 0.0);

...
{/CODE]

Does this help explain whats going wrong at all?

Cheers ...

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 12/05/2005 at 08:37, xxxxxxxx wrote:

Hi

direction vectors are usually transformed by
newdir = dir^globalMat;
This omits the translation.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 12/05/2005 at 09:15, xxxxxxxx wrote:

Cheers Michael, will give that a go ...

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 13/05/2005 at 01:30, xxxxxxxx wrote:

Wow! That worked like a treat. Still a little bit of weirdness going on in the distance, but probably my maths!!

Excellent Michael, thanks!