OK, I'm with you now. Another way might be to just draw the images in
3d as I suggested, turn off depth testing (so the sprites draw over
the background), and scale the size by the inverse of Z to prevent
them shrinking. That would put more of the maths into QC rather than
JS/math patches, which could be faster (useful when you're doing lots
of points in an iterator).
Chris
2009/11/3 Sune Watts <email@hidden>:
> Hiya Chris
>
> Allright, I dug into the maths and seem to have solved it. I'll share it
> here, as I feel it is useful.
>
> QC file is attached this email.
>
> To project a 3d point onto space, use this formula and z-axis scale factor:
>
>
> var scaleFactor = 0.58;
> screenX = obX * (1 / ( 1 + (-obZ * scaleFactor) ));
> screenY = obY * (1 / ( 1 + (-obZ * scaleFactor) ));
>
> ---
> I need it for a top layer of 2d overlays and pointers that do not scale, but
> accurately follow a moving 3d scene.
>
>
> All the best
> Sune Watts
> ---
>
>
> On Tue, Nov 3, 2009 at 1:34 PM, Chris Wood <email@hidden> wrote:
>>
>> If you really want to do it manually, you'll need to learn some maths.
>> You need to calculate the distance of a point on a sphere from the
>> camera (the camera position in QC is (0,0,-1) if I remember right) to
>> determine size and perspective transform.
>>
>> I don't understand why you need to convert though - if you have the
>> xyz position, why not just tell QC to draw your image at that xyz
>> position?
>>
>> You could also use the 3D transform patch perhaps?
>>
>> Chris
>>
>>
>> 2009/11/3 Sune Watts <email@hidden>:
>> > Sorry if I was unclear:
>> >
>> > How to translate an (x, y, z) point into (x, y) screen coordinates --
>> >
>> > For example, you have a rotating globe and want to know the screen
>> > coordinates of a certain city on the globe.
>> >
>> >
>> > Best regards
>> > Sune Watts
>> >
>> >
>> > ---
>> >
>> >
>> > On Tue, Nov 3, 2009 at 11:02 AM, Chris Wood <email@hidden> wrote:
>> >>
>> >> QC supports 3D space already. There's 2 ways to show a 2D image:
>> >> Billboard (this is best for overlays and the like, and is 2D based)
>> >> and Sprite (this is similar to billboard, but exists in full 3D space
>> >> so you can move it on Z, and rotate on all 3 axis.
>> >>
>> >> Most likely, sprite will cover your needs.
>> >>
>> >> Chris
>> >>
>> >>
>> >> 2009/11/3 Sune Watts <email@hidden>:
>> >> > Hello all;
>> >> >
>> >> > I need to pin a 2D billboard onto a (moving) point in 3D space.
>> >> >
>> >> > I haven't been able to find any info on the z-axis scaling QC
>> >> > employs.
>> >> >
>> >> > Has anybody got a handle on mathematically converting a point in 3D
>> >> > space to
>> >> > 2D screen space?
>> >> >
>> >> >
>> >> > All the best
>> >> > -SW
>> >> >
>> >> > _______________________________________________
>> >> > Do not post admin requests to the list. They will be ignored.
>> >> > Quartzcomposer-dev mailing list
>> >> > (email@hidden)
>> >> > Help/Unsubscribe/Update your Subscription:
>> >> >
>> >> >
>> >> > http://lists.apple.com/mailman/options/quartzcomposer-dev/email@hidden
>> >> >
>> >> > This email sent to email@hidden
>> >> >
>> >
>> >
>> > _______________________________________________
>> > Do not post admin requests to the list. They will be ignored.
>> > Quartzcomposer-dev mailing list
>> > (email@hidden)
>> > Help/Unsubscribe/Update your Subscription:
>> >
>> > http://lists.apple.com/mailman/options/quartzcomposer-dev/email@hidden
>> >
>> > This email sent to email@hidden
>> >
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Quartzcomposer-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/quartzcomposer-dev/email@hidden
>
> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/email@hidden
This email sent to email@hidden