• Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Social Media
    •   @Wings3dOfficial
    •   @Wings3dOfficial
    •   Wings3dOfficial
    •   Wings3dOfficial
  • Register
  • Login
  • Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Register
  • Login
Wings 3D Development Forum Wings 3D Programming v
« Previous 1 2 3 4 Next »
Viewport Y-offset - how to find it?

 
  • 0 Vote(s) - 0 Average
Viewport Y-offset - how to find it?

micheus
Offline

Forum's Admin and Support | Bug fixer
Posts: 3,681
Threads: 185
Joined: Jun 2012
#1
04-27-2013, 09:41 AM (This post was last modified: 04-28-2013, 04:19 AM by micheus.)
I need to make my own "vertex select" routine for a new plugin. So, I create some functions based on those already existent in Wings. The find_vertex converts the 3D coordinate into 2D (viewport coordinates).

The problem is that I'm always getting the Y coordinated with an offset of 75px. This is exactly the height used by title bar+menu bar+button bar by using only the default Geom window.
[Image: geom-win-offset_zps1332bacb.png]
I couldn't find the "magic" at Wings3d code. Can someone help me?

Code:
...
    {GX,GY} = wings_wm:local2global(X, Y),
    Mode = case raw_pick(GX,GY,Vs) of
...

raw_pick(X0, Y0, Vs0) ->
    Trans = wings_u:get_matrices(0, original), % fake call for ID=0 as we force original for MM parameter
    Vs = lists:sort(find_vertex(Vs0, X0, Y0, Trans)),
    [{Vdist0,{_Xva,_Yva},_V},{_,{_Xvb,_Yvb},_}|_] = Vs,
    Vdist = math:sqrt(Vdist0),
    (Vdist =< 2.0).
find_vertex(Vs, X, Y, {_,_,{_,_,W,H}}=Trans) ->
    lists:map(fun(#vl{v=V}) ->
        {Xs,Ys} = Pos = project_vertex(V, Trans),
        io:format("  Xs,Ys (~p,~p)\n",[Xs,H-Ys]),
        Dx = X-Xs,
        Dy = Y-Ys,
        {Dx*Dx+Dy*Dy,Pos,V}
    end, Vs).
micheus
Offline

Forum's Admin and Support | Bug fixer
Posts: 3,681
Threads: 185
Joined: Jun 2012
#2
04-28-2013, 04:24 AM (This post was last modified: 04-28-2013, 04:25 AM by micheus.)
Well, after lot of tries I found it...

I added the call to global2local function:
Code:
find_vertex(Vs, X, Y, {_,_,{_,_,W,H}}=Trans) ->
    lists:map(fun(#vl{v=V}) ->
        {X0,Y0} = project_vertex(V, Trans),
        {Xs,Ys} = Pos = wings_wm:global2local(X0,Y0),  <<==
        Dx = X-Xs,
        Dy = Y-Ys,
        {Dx*Dx+Dy*Dy,Pos,V}
    end, Vs).
Now, both Y's values uses the same 75px offset.
bmulder
Offline

Junior Member

Posts: 1
Threads: 0
Joined: Mar 2014
#3
03-18-2014, 06:37 PM
Viewport Y-offset

Thanks guys.I went surfing the net blue for this information till a friend advised my to try wings3d.com.
Will give code it a try a give feedback
« Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)



  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Designed by D&D - Powered by MyBB

Linear Mode
Threaded Mode