Half-baked API (Camera position)

Pavel Safrata pavel.safrata at oracle.com
Wed Oct 16 08:22:00 PDT 2013

On 16.10.2013 17:03, Stephen F Northover wrote:
> Could do something useful with what was there now?  We can always fix 
> this in future by adding another API to govern the interpretation of 
> the value.

Not much useful. Anyway, any such stuff can be quite easily done by 
reading the intersectedPoint's Z coordinate.

> Throwing the exception indicates that the call is unsupported, but 
> application code can be written to catch the exception and when we 
> implement the API, it can break (I realize that this is unlikely).

The exception can tell by the message that the operation will be 
supported in the future.


> Steve
> On 2013-10-16 10:46 AM, Richard Bair wrote:
>> My quick vote would be throwing the exception, but is like to hear 
>> from Steve and Kevin.
>>> On Oct 16, 2013, at 1:04 AM, Pavel Safrata 
>>> <pavel.safrata at oracle.com> wrote:
>>> Hello,
>>> it looks like we can't help releasing a not-fully-baked piece of API 
>>> with FX8. We've added bunch of new APIs for 3D and did our best to 
>>> make them work well. Unfortunately, there's been not enough 
>>> time&priority to fine-tune their behavior in 2D world. Right now I'm 
>>> concerned about camera position in scene. It is inherent in the 3D 
>>> perspective camera that it has its specific position in world, but 
>>> the 2D parallel camera as we have it projects everything to the XY 
>>> plane basically by ignoring the Z coordinate, so the camera position 
>>> doesn't matter all that much. However, some of the newly added APIs 
>>> depend on it:
>>> 1. Near/far clip on camera. This obviously cannot work without 
>>> knowing where the camera is. Right now the parallel camera does no 
>>> clipping though, so I guess we are OK to go with it as a "known 
>>> limitation".
>>> 2. PickResult on events which reports "intersectedDistance" between 
>>> the camera and the picked point. This is worse because we can't just 
>>> "not support" it - there will be some value and once somebody uses 
>>> it we'll have a backward compatibility issue. The state right now is 
>>> that the camera is (tentatively, by my arbitrary decision) at [0, 0, 
>>> -1] and reports distances from there (note that as the camera 
>>> renders everything, for nodes "in front of Z=-1" it reports negative 
>>> distances). This may change when the camera position is properly 
>>> discussed and specified.
>>> Note that this post is *not* meant to discuss the camera position. 
>>> Even if we could find the answer quickly (which I doubt), it's most 
>>> probably too late to apply the change for FX8.
>>> So finally here is my question: do you think it's OK to solve this 
>>> by keeping the current behavior and documenting the 
>>> "intersectedDistance" in a way that for parallel camera the numbers 
>>> are unspecified and subject to change in future versions? Or would 
>>> you prefer something more drastic like throwing an 
>>> UnsupportedOperationException (losing the possibility to compare the 
>>> distances)?
>>> Thanks,
>>> Pavel

More information about the openjfx-dev mailing list