|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi,
I'm not sure if this goes in the advanced category or not, but I'm having
a problem. I trying to make a snow casting macro, and for this I using
nested loops, but I don't want to have a blob created if a collision isn't
made so here is the conext:
[code]
#declare trval = trace(Objapply, coords1, coords2, <0,0,0>);
#if(trval != <0,0,0>)
....
#end
[/code]
It highlights the #if line and comes up with
"Parse Error: Float expected but vector or color expression found."
and If I change the expression to "(trval != 0)" It does the same thing.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Veggiet" <nomail@nomail> wrote:
> Hi,
> I'm not sure if this goes in the advanced category or not, but I'm having
> a problem. I trying to make a snow casting macro, and for this I using
> nested loops, but I don't want to have a blob created if a collision isn't
> made so here is the conext:
>
> [code]
> #declare trval = trace(Objapply, coords1, coords2, <0,0,0>);
> #if(trval != <0,0,0>)
> ....
> #end
> [/code]
>
> It highlights the #if line and comes up with
> "Parse Error: Float expected but vector or color expression found."
>
> and If I change the expression to "(trval != 0)" It does the same thing.
this should work:
[code]
#declare Norm = <0,0,0>;
#declare trval = trace(Objapply, coords1, coords2, Norm);
#if(vlength(Norm)!=0)
.....
#end
[/code]
two faults. first: when an object was hit then the intersection point will
be stored in trval and the normalvector at the intersectionpoint will be
stored in the (optional) fourth indentifier. so when you want to know if an
object was hit or not you have to test that vector (Norm in the example)
and not trval. second fault: you can't compare vectors like you did. either
you compare there length (which works when you test for zero, as in the
example) or you use VEq(V1, V2) in math.inc
Roman
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Wasn't it Veggiet who wrote:
>Hi,
> I'm not sure if this goes in the advanced category or not, but I'm having
>a problem. I trying to make a snow casting macro, and for this I using
>nested loops, but I don't want to have a blob created if a collision isn't
>made so here is the conext:
>
>[code]
>#declare trval = trace(Objapply, coords1, coords2, <0,0,0>);
>#if(trval != <0,0,0>)
>....
>#end
>[/code]
>
>It highlights the #if line and comes up with
>"Parse Error: Float expected but vector or color expression found."
>
>and If I change the expression to "(trval != 0)" It does the same thing.
Even if you get the syntax right, there's always the possibility of a
valid hit at the point <0,0,0>
The usual way to check for trace() hits is like this:
#declare Norm=<0,0,0>;
#declare trval = trace(Objapply, coords1, coords2, Norm);
#if (vlength(Norm) > 0)
...
#end
The normal will only have length zero if the trace misses.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Wow, Thank you all for your very quick responses! Yep, Checking the Norm
works. Thank you again very much.
VeggieT
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|