Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
wyrównany do osi prostokąt
#1
Nie jestem pewien, ale myślę, że ten sposób osiągania tego, czego chcę, jest dość zły, ale nie mogę się domyślić, czy uda mi się uzyskać w grze minimalne i maksymalne wektory ... Niewielu członków próbowało mi to wyjaśnić, ale wciąż mam kłopoty, więc zrobiłem to do testowania ... Nie chcę żadnego twardego kodowania, chcę zachować rzeczy dynamiczne i dokładne ... W każdym razie to jest to, co zrobiłem     Kod:   D3DXVECTOR3 min = D3DXVECTOR3 (9999, 9999, 9999), maks. = D3DXVECTOR3 (-9999, -9999, -9999); dla (int j = 4; j <208; j ++) { Kość D3DXVECTOR3; GetBone (pSoldier i kości, j); if (bone.x <min.x) min.x = bone.x; if (bone.y <min.y) min.y = bone.y; if (bone.z <min.z) min.z = bone.z; if (bone.x> max.x) max.x = bone.x; if (bone.y> max.y) max.y = bone.y; if (bone.z> max.z) max.z = bone.z; } D3DXVECTOR3 crnr2 = D3DXVECTOR3 (max.x, min.y, min.z); D3DXVECTOR3 crnr3 = D3DXVECTOR3 (max.x, min.y, max.z); D3DXVECTOR3 crnr4 = D3DXVECTOR3 (min.x, min.y, max.z); D3DXVECTOR3 crnr5 = D3DXVECTOR3 (min.x, maks.y, maks.z); D3DXVECTOR3 crnr6 = D3DXVECTOR3 (min.x, maks.y, min.z); D3DXVECTOR3 crnr7 = D3DXVECTOR3 (max.x, max.y, min.z); WorldToScreen (& min); WorldToScreen (& max); WorldToScreen (& crnr2); WorldToScreen (& crnr3); WorldToScreen (& crnr4); WorldToScreen (& crnr5); WorldToScreen (& crnr6); WorldToScreen (& crnr7); / * .5 ------ 8 . " | . " 6 --- + - 7 '| | | | | | , 4 - + --- 3 |. " | . " 1 ------ 2 ' 1 = min 8 = maks * / // Od min. Do 2, 4 i 6 fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (min.x, min.y), & fb :: Tuple2 <float> (crnr2.x, crnr2.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (min.x, min.y), & fb :: Tuple2 <float> (crnr4.x, crnr4.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (min.x, min.y), & fb :: Tuple2 <float> (crnr6.x, crnr6.y), fb :: Color32 (255, 0, 0, 255)); // Od maks. Do 5, 7 i 3 fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (max.x, max.y), & fb :: Tuple2 <float> (crnr5.x, crnr5.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (max.x, max.y), & fb :: Tuple2 <float> (crnr7.x, crnr7.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (max.x, max.y), & fb :: Tuple2 <float> (crnr3.x, crnr3.y), fb :: Color32 (255, 0, 0, 255)); // Od 2 do 7 i 3 fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr2.x, crnr2.y), & fb :: Tuple2 <float> (crnr7.x, crnr7.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr2.x, crnr2.y), & fb :: Tuple2 <float> (crnr3.x, crnr3.y), fb :: Color32 (255, 0, 0, 255)); // Od 4 do 5 i 3 fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr4.x, crnr4.y), & fb :: Tuple2 <float> (crnr5.x, crnr5.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr4.x, crnr4.y), & fb :: Tuple2 <float> (crnr3.x, crnr3.y), fb :: Color32 (255, 0, 0, 255)); // Od 6 do 5 i 7 fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr6.x, crnr6.y), & fb :: Tuple2 <float> (crnr5.x, crnr5.y), fb :: Color32 (255, 0, 0, 255)); fb :: DebugRenderer2 :: Singleton () -> drawLine2d (& fb :: Tuple2 <float> (crnr6.x, crnr6.y), & fb :: Tuple2 <float> (crnr7.x, crnr7.y), fb :: Color32 (255, 0, 0, 255));   Wynik:
Reply
#2
Fajnie, dziękuję, rep!
Reply
#3
Dobry przedstawiciel pracy
Reply
#4
Dzięki chłopaki, ale chciałbym też wiedzieć, czy jest na to skuteczniejszy sposób. w zasadzie chciałbym to zrobić bez żadnych kości (niewidoczne kości nie są aktualizowane i trzeba je zmusić)
Reply
#5
Zacytować: Napisał ChaosIA Dzięki chłopaki, ale chciałbym też wiedzieć, czy jest na to skuteczniejszy sposób. w zasadzie chciałbym to zrobić bez żadnych kości (niewidoczne kości nie są aktualizowane i trzeba je zmusić) afaik są jeszcze dwie opcje twardego kodu, który powiedziałeś, że nie chcesz, co pozostawia nam w grze funkcję calculatelocalboundingbox, chyba że ktoś przetestuje ten, który napisałem wcześniej, aby sprawdzić, czy jest poprawny lub opublikował inny, który jest wszystkim, co mam
Reply
#6
Zacytować: Napisał stevemk14ebr afaik są jeszcze dwie opcje twardego kodu, który powiedziałeś, że nie chcesz, co pozostawia nam w grze funkcję calculatelocalboundingbox, chyba że ktoś przetestuje ten, który napisałem wcześniej, aby sprawdzić, czy jest poprawny lub opublikował inny, który jest wszystkim, co mam myślisz, że przejście przez wszystkie kości wpłynie na wydajność?
Reply
#7
Zacytować: Napisał ChaosIA myślisz, że przejście przez wszystkie kości wpłynie na wydajność? nie, ale zmuszanie kości do aktualizacji mogło, tak czy inaczej, dawałem tylko inne opcje
Reply
#8
Kod: dla (int j = 4; j <208; j) { Kość D3DXVECTOR3; Czy naprawdę potrzebujesz wszystkich kości?
Reply
#9
Jeśli nie używasz Renderowania DEBUGA i prob chcesz zapisać FPS, użyj wektora ze współrzędnymi i narysuj je w świecie, zamiast konwertować na 2D. D3D11_PRIMITIVE_TOPOLOGY_LINELIST jest tym, czego chcesz użyć.
Reply
#10
http://www.unknowncheats.me/forum/875552-post3.html nie używaj kości do aabb. srsly
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)