![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Before I try and fail I will instead ask. ( a novel concept isn't it :)
Many laser light shows rely on reflecting laser beams from mirror to mirror
and tracing their path with the help of smoke to make the laser beams path
visible to the spectator. Since they use precision first surface mirrors
there is virtualy no loss of intensity of the light as it is transferred
from each mirrored surface.
Is the above scenario possible with the reflection capabilities of the
Photon Patch or should I expect some fall off of intensity ?
I need this information as I would like to model, for a customer, the inner
workings of a surface ablation device that uses a laser in cooperation with
a galvenomteter driven mirror system to fucntion.
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
You have to remember that the photon patch doesn't currently work with
media, so laser beams won't be visible (I have absolutely no knowlege about
the device you're after, but wouldn't it require visible laser beams in the
ablation zone?)
As for light intensity - Nathan knows better, but I'd imagine photon mapping
(which is basically backward raytracing) should produce no intensity falloff
when reflecting off a perfect mirror - just like in standard raytracing.
Margus
Ken wrote in message <375DFB54.C30B434C@pacbell.net>...
>
>
> Before I try and fail I will instead ask. ( a novel concept isn't it :)
>
> Many laser light shows rely on reflecting laser beams from mirror to
mirror
>and tracing their path with the help of smoke to make the laser beams path
>visible to the spectator. Since they use precision first surface mirrors
>there is virtualy no loss of intensity of the light as it is transferred
>from each mirrored surface.
> Is the above scenario possible with the reflection capabilities of the
>Photon Patch or should I expect some fall off of intensity ?
>
> I need this information as I would like to model, for a customer, the
inner
>workings of a surface ablation device that uses a laser in cooperation with
>a galvenomteter driven mirror system to fucntion.
>
>--
>Ken Tyler
>
>mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Margus Ramst wrote:
>
> You have to remember that the photon patch doesn't currently work with
> media, so laser beams won't be visible (I have absolutely no knowlege about
> the device you're after, but wouldn't it require visible laser beams in the
> ablation zone?)
> As for light intensity - Nathan knows better, but I'd imagine photon mapping
> (which is basically backward raytracing) should produce no intensity falloff
> when reflecting off a perfect mirror - just like in standard raytracing.
>
> Margus
Well that pretty well blows that idea all to heck. I forgot about the
lack of media intereaction. Now for my next trick...
Thanks Margus.
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Ken wrote:
>
> Margus Ramst wrote:
> >
> > You have to remember that the photon patch doesn't currently work with
> > media, so laser beams won't be visible (I have absolutely no knowlege about
> > the device you're after, but wouldn't it require visible laser beams in the
> > ablation zone?)
> > As for light intensity - Nathan knows better, but I'd imagine photon mapping
> > (which is basically backward raytracing) should produce no intensity falloff
> > when reflecting off a perfect mirror - just like in standard raytracing.
> >
> > Margus
>
> Well that pretty well blows that idea all to heck. I forgot about the
> lack of media intereaction. Now for my next trick...
>
> Thanks Margus.
>
> --
> Ken Tyler
>
> mailto://tylereng@pacbell.net
It will probably be easier to model using colored cylinders anyway.
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Indeed. You'd probably have to use the SuperPatch's trace function, tho.
Here's a macro (by Ron Parker) that might help. I don't remember if R has to
point from the surface or toward the surface, you'll have to test it.
//Returns the mirror vector of R at surface normal N
#macro v_mirror(R,N)
#local nN=vnormalize(N);
#local par=vdot( R, nN );
#local perp=R-par*nN;
vnormalize(par*nN-perp)
#end
Ken wrote in message <375E5F95.FBA2A85B@pacbell.net>...
>
>It will probably be easier to model using colored cylinders anyway.
>
>--
>Ken Tyler
>
>mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Margus Ramst wrote:
>
> Indeed. You'd probably have to use the SuperPatch's trace function, tho.
> Here's a macro (by Ron Parker) that might help. I don't remember if R has to
> point from the surface or toward the surface, you'll have to test it.
>
> //Returns the mirror vector of R at surface normal N
> #macro v_mirror(R,N)
> #local nN=vnormalize(N);
> #local par=vdot( R, nN );
> #local perp=R-par*nN;
> vnormalize(par*nN-perp)
> #end
Thanks for the tip. I doubt I will use the "Super Patch" as the new version
is still unavailable and my need for completing this in a timely manner is
great. My much older (12/98), outdated, and inefficient version of the "Super
Patch" is corrupt so no longer works plus it is not available anywhere on the
net for download. I asked yesterday when I could have a copy of the new version
of the "Super Patch" and was told to "bugger off" (so to speak :).
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On Wed, 09 Jun 1999 07:30:49 -0700, Ken wrote:
> Thanks for the tip. I doubt I will use the "Super Patch" as the new version
>is still unavailable and my need for completing this in a timely manner is
>great. My much older (12/98), outdated, and inefficient version of the "Super
>Patch" is corrupt so no longer works plus it is not available anywhere on the
>net for download. I asked yesterday when I could have a copy of the new version
>of the "Super Patch" and was told to "bugger off" (so to speak :).
You were not. I was joking, as I thought you were. Furrfu. I really
don't know when it will be online, it depends heavily on what else is
going on in my life. Nevertheless, every time I mention it I get asked
when it's going to be back online, despite the fact that I've said more
than once that I really don't know.
If you're intersecting a ray with a planar mirror, trace isn't really
necessary because the operation is so simple. Here's a macro to find
it, borrowed somewhat from the POV source.
#macro IntersectPlane( _PlaneNormal, PlaneOffset, RayInitial, _RayDirection )
#local PlaneNormal=vnormalize(_PlaneNormal+<0,0,0>);
#local RayDirection=vnormalize(_RayDirection+<0,0,0>);
#local NormalDotDirection = vdot(RayDirection, PlaneNormal);
#if ( abs(NormalDotDirection) < 0.00001 )
#error "Ray parallel to mirror"
#end
#local NormalDotOrigin = vdot( RayInitial, PlaneNormal );
#local Depth=(PlaneOffset - NormalDotOrigin) / NormalDotDirection;
RayInitial+Depth*RayDirection
#end
Of course, this assumes you haven't done anything with the mirror, like
rotating or scaling it. If you've done that, you'll have to fix the
normal and offset appropriately.
Translate is
#declare Offset=Offset+(Normal*Translation);
Rotate is trickier - you have to multiply the normal vector by the
transpose of the rotation matrix. If you rotate before you translate,
though (and you probably will) you can no doubt find an easier way to
find the new normal. Hope this all helps.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 9 Jun 1999 13:18:03 -0400, Ron Parker wrote:
>Of course, this assumes you haven't done anything with the mirror, like
>rotating or scaling it. If you've done that, you'll have to fix the
>normal and offset appropriately.
Wicked thought - just find three points on your plane (this is easy
enough, especially if you start with an axis-aligned plane.) and
transform each of them as you transform the plane, then recalculate
the normal and offset from them.
#local Normal = vnormalize(vcross( c-a, b-a ) );
#local Offset = vdot( a, Normal );
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Ken wrote:
>
> It will probably be easier to model using colored cylinders anyway.
>
I agree. Even when media interaction is impelmented, you will probably
still get better results in much less time using MUCH less memory if you
fake it.
-Nathan
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Ron Parker wrote:
> > I asked yesterday when I could have a copy of the new version
> > of the "Super Patch" and was told to "bugger off" (so to speak :).
>
> You were not. I was joking, as I thought you were. Furrfu. I really
> don't know when it will be online, it depends heavily on what else is
> going on in my life. Nevertheless, every time I mention it I get asked
> when it's going to be back online, despite the fact that I've said more
> than once that I really don't know.
I was taking yet another friendly swipe when I mentined the above.
> If you're intersecting a ray with a planar mirror, trace isn't really
> necessary because the operation is so simple. Here's a macro to find
> it, borrowed somewhat from the POV source.
>
> #macro IntersectPlane( _PlaneNormal, PlaneOffset, RayInitial, _RayDirection )
> #local PlaneNormal=vnormalize(_PlaneNormal+<0,0,0>);
> #local RayDirection=vnormalize(_RayDirection+<0,0,0>);
> #local NormalDotDirection = vdot(RayDirection, PlaneNormal);
> #if ( abs(NormalDotDirection) < 0.00001 )
> #error "Ray parallel to mirror"
> #end
> #local NormalDotOrigin = vdot( RayInitial, PlaneNormal );
> #local Depth=(PlaneOffset - NormalDotOrigin) / NormalDotDirection;
> RayInitial+Depth*RayDirection
> #end
>
> Of course, this assumes you haven't done anything with the mirror, like
> rotating or scaling it. If you've done that, you'll have to fix the
> normal and offset appropriately.
>
> Translate is
> #declare Offset=Offset+(Normal*Translation);
>
> Rotate is trickier - you have to multiply the normal vector by the
> transpose of the rotation matrix. If you rotate before you translate,
> though (and you probably will) you can no doubt find an easier way to
> find the new normal. Hope this all helps.
I think I have a simple yet elegant solution in the works. Since
I have abandoned the photon technique in favor of simply connecting
cylinders from each mirror surface to the next John Van Sickles
connect the dots macro handles it well and I know how to use it
from previous experience.
Thank you for taking the time to offer assistance.
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |