1
$\begingroup$

I have 2 vertices in 3d space (P1, P3)

enter image description here

I want to create a rectangle that is aligned along the viewrotation. The vertices P1, P3 are already aligned to the current viewrotation matrix. How can I calculate P2 and P4 so that I can create a rectangle?

$\endgroup$

1 Answer 1

1
$\begingroup$

Alright, now I got a good solution, I wrote a function to calculate the vertex3d from 3d like this, that takes the roation of the viewport into account:

def get_3d_vertex(context, vertex_2d): region = context.region rv3d = context.space_data.region_3d view_rot = rv3d.view_rotation overlay3d = context.space_data.overlay dir = get_view_direction(context) * -context.scene.draw_distance vec = region_2d_to_location_3d(region, rv3d, vertex_2d, dir) 

When the rectangle is created I use the 2d mouse points to calculate all points of the rect:

def create_rect(self, context): rv3d = context.space_data.region_3d view_rot = rv3d.view_rotation self._vertices.clear() self._vertices.append(self._vertex1) # self._vertex1 and 3 are already in 3d space vertex2 = (self._vertex1_2d[0], self._vertex3_2d[1]) vertex2 = get_3d_vertex(context, vertex2) vertex4 = (self._vertex3_2d[0], self._vertex1_2d[1]) vertex4 = get_3d_vertex(context, vertex4) self._vertices.extend([vertex2, self._vertex3, vertex4]) 
$\endgroup$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.