A nie, wszystko w porządku. Zaraz napiszę jak zrobić tego .inca .
Poradnik postaram się napisać tak, by każdy czytający go krok po kroku zrobił wszystko dobrze.
Wystarczy na bieżąco wykonywać opisane czynności.
@Mytnik, piszesz, że chcesz wstawić model tylko w osiach x, y, z. Co prawda taki model będzie ułomny, bo bez obracania choćby w osi pionowej.
Podstawowa budowa pliku .inc .
Rozpoczynamy od utworzenia pliku .inc . Tak wygląda podstawowy plik .inc dla zwykłego modelu:
origin 0 0 0
rotate 0 0 0
node 1000 0 none model 0 0 0 0 ścieżka_do_modelu/nazwa_modelu.t3d none endmodel
rotate 0 0 0
endorigin
Interesują nas tylko dwie linijki- origin i rortate.
origin 0 0 0
rotate 0 0 0
Bardziej obrazowo wygląda to tak (w nawiasach informacja o parametrze):
origin 0(położenie w osi x) 0(położenie w osi y) 0(położenie w osi z)
rotate 0 (obrót w osi 1) 0(obrót w osi 2) 0(obrót w osi 3)
Zero oznacza, że parametr nie został przypisany.
Model do wstawiania w osiach x,y z.
Chcemy, by obiektowi można było nadać położenie na scenerii w osiach x, y oraz z; obracanie nas nie interesuje.
Zamieniamy więc zera w linijce origin na parametry, po kolei (p1), (p2), (p3).
origin (p1) (p2) (p3)
rotate 0 0 0
Gotowy plik .inc wygląda więc tak:
origin (p1) (p2) (p3)
rotate 0 0 0
node 1000 0 none model 0 0 0 0 ścieżka_do_modelu/nazwa_modelu.t3d none endmodel
rotate 0 0 0
endorigin
Plik .inc gotowy! Można teraz sobie wstawiać model gdziekolwiek, pamiętając jednak, że bez jakiegokolwiek obracania (czyli tak jak chcieliśmy).
Wstawiamy więc go sobie do scenerii. Wpis do scenerii wygląda tak (w nawiasach informacja):
include;nazwa_pliku.inc;0.0(położenie na scenerii w osi x);0.0(położenie na scenerii w osi y);0.0 (położenie na scenerii w osi z);end
Wyobraźmy sobie, ze chcemy ten model wstawić 30 metrów na zachód, 25,5 metra na północ, i na wysokości 0 metrów. Podmieniamy więc sobie wartości zgodnie powyższym opisem:
include;przyklad.inc;30.0;25.0;0.0;end
Gotowe. Można uruchomić scenerię i sprawdzić, czy wszystko gra.
Dodanie opcji obracania w osi pionowej.
No dobrze, jednak taki model, jak już wspomniałem, będzie ułomny z powodu braku możliwości obracania go w osi pionowej. Jeśli chcemy go w tej osi obracać, musimy dodać kolejny parametr. Otwieramy ponownie nasz plik .inc .
Interesuje nas linijka rotate, ta
tuż pod origin:
rotate 0 0 0
Obracanie w osi pionowej to to drugie zero. Zamieniamy go na kolejny parametr. (p1), (p2) i (p3) już zarezerwowaliśmy, a więc ten nazywamy (p4):
rotate 0 (p4) 0
Gotowe! Nasz plik wygląda teraz tak:
origin (p1) (p2) (p3)
rotate 0 (p4) 0
node 1000 0 none model 0 0 0 0 ścieżka_do_modelu/nazwa_modelu.t3d none endmodel
rotate 0 0 0
endorigin
Obróćmy sobie teraz masz model na scenerii o 90
o w lewo. Za średnikiem dajemy wiec liczbę 90.0 i zamykamy średnikiem. Jeśli byśmy chcieli obrócić o 90 stopni w prawo, piszemy -90.0 lub 270.0
include;przyklad.inc;30.0;25.0;0.0;90.0;end
Już. Mamy postawiony model, dodatkowo obrócony 90
o w lewo.
Obracanie w pozostałych osiach.
Lecimy dalej. Model można obracać tylko w osi pionowej, czas dodać pozostałe osie obrotu. Znów otwieramy nasz plik .inc i patrzymy na linijke rotate. Mamy przypisany tylko jeden parametr, przypisujemy więc resztę:
origin (p1) (p2) (p3)
rotate (p5) (p4) (p6)
Brzydko to jednak wygląda, brak kolejności... Poprawiamy więc na:
origin (p1) (p2) (p3)
rotate (p4) (p5) (p6)
Teraz należy pamiętać, że obrót w osi pionowej zmienił się w (p5). Parametry (p4) i (p6) na razie zostawiamy.
Oznaczenie (p5) oznacza, że jest to po prostu piata wartość liczbowa. (p4) i (p6) mieliśmy zostawić, więc czwartą i szóstą liczbę zostawiamy, wstawiając 0.0.
include;przyklad.inc;100.0;0.0;100.0;0.0;90.0;0.0;end
Uruchamiamy scenerię. Efekt jest taki sam, jak poprzednio- po prostu czwarta i szósta wartość jest zerowa, czyli bez zmian w położeniu.
Możemy sobie teraz je pozmieniać, i popatrzeć, jaki efekt przyniosą zmiany.
Informacje dodatkowe.
W przytoczonych przykładach rozdzielanie parametrów rozpoczynaliśmy od (p1).
W praktyce parametr (p1) jest przyporządkowany do nazwy tekstury (gdy do modelu można przyporządkować kilka tekstur, na przykład pliki tekstury z różnymi kolorami jednego auta).
Natomiast osi obrotu x i z się w zasadzie nie używa (po co pochylać, powiedzmy, blok) poza kilkoma wyjątkami (na przykład wskaźniki- są one często pochyłe).
Można więc powiedzieć o pewnego rodzaju standardzie:
(p1), ewentualnie (p6) (gdy nie używa się wszystkich osi obrotu, bo wtedy (p6) to obrót w osi z) - tekstura.
(p2), (p3), (p4)- położenie w osiach x. y z.
Przy obrocie, tak jak wspomniałem, używa się tylko jednej osi, a mianowicie pionowej, czyli:
(p5)- obrót w osi pionowej.
W porządku, więc jeśli zaczynamy od (p2), to jak skonstruować wpis do scenery, gdy nie używamy (p1)?
Po prostu, pomiędzy średniki, w których powinna byc nazwa tekstury, wpisujemy 0.0 albo none (w nawiasach objaśnienie):
include;przyklad.inc;none(zamiast nazwy tekstury, może tez być wartość0.0);30.0(p2);0.0(p3);25.0(p4);end
I to tyle.
Rozwinięcie tematu wymiennej tekstury i innych możliwości plików .inc będzie w późniejszym terminie.
Podziękowania dla @Benka za pomoc w zrozumieniu zmian parametrów obrotu:).