W pewnym momencie w e-on utrzymałem gadżety z linii produktów Vue .
Mogę ci powiedzieć, że zajmie ci to wiele dni, w pełnym wymiarze godzin.
O ile nie znajdziesz jakiejś biblioteki lub super sprytnego sposobu, klasycznym sposobem jest uzyskanie współrzędnej myszy w oknie po kliknięciu, jeśli jest to względna współrzędna do rzutni, możesz po prostu podzielić xiy przez szerokość i wysokość, możesz uzyskaj wektor (liczba zmiennoprzecinkowa 2d) w zakresie [0,1]. odejmij (0,5,0,5), aby dostać się do zakresu [-0,5, 0,5] zarówno dla x, jak i y.
Następnie wykonujesz promień z tej współrzędnej, używając xiy po prostu jako promień xiy, i ustawiasz z na odległość ogniskową. czasami proporcje to ból w tyłku podczas tej operacji. Trochę majstrowania i błąd próbny naprawi cię.
Następnie musisz sprawdzić skrzyżowanie z elementami gizmos, albo masz siatkę, którą wygenerowałeś, albo zamodelowałeś w blenderze lub innym DCC, albo części siatki, które mogą się między sobą przesuwać ... Po prostu użyj tej części siatki jako promienia / zapytanie o przecięcie trójkąta.
Lub jeśli masz, promień / cylinder, promień / kula zgodnie z twoim wyglądem i częściami Gizmo.
Musisz mieć procedury przecinania, które są w stanie zastosować macierz transformacji na zderzających się operacjach pierwotnych . Niezwykle ważne, ponieważ twoje gadżet będzie tłumaczył obiekt, który ma się poruszyć, będzie się obracał i będzie skalował się wraz z odwrotnością odległości do kamery, dzięki czemu zachowa ustalony rozmiar na ekranie.
Następnie masz część interakcji, najłatwiej jest wziąć deltę punktu, w którym mysz była po raz pierwszy zdarzeniem „mysz w dół”, i bieżącą pozycję „Ruch myszy”, w czystym 2D, i użyć tej delty jako bieżącego ruchu osi w przestrzeni świata pomnożonej przez niektóre k
, które zdecydujesz empirycznie. Zgodnie z jednostkami wewnętrznymi kontra piksel kontra aktualna skala zoomu itp.
Ostatnim krokiem jest po prostu nałożenie matrycy Gizmo na manipulowany obiekt, aby podążał za nim.
Mówię wam, że jest to dość piekielna podróż do wdrożenia, a jeśli robicie to w wolnym czasie, spodziewajcie się więcej niż tydzień. Wiele tygodni, jeśli całkowicie odkrywasz pole. Ponad miesiąc, jeśli weekendy są zajęte innymi zajęciami :)
Sugeruję, aby pobrać Embree 2.0 z Intel, aby wykonać dla ciebie zapytanie o skrzyżowanie promień / trójkąt, więc nie musisz się martwić o kodowanie. Czy możesz bezlitośnie kopiować / wklejać i dostosowywać kod z blendera ... Myślę, że przenieśli się na licencję Apache? Powinno to być możliwe zgodnie z prawem.