Programy które będą potrzebne:
- Blender ( dla początkujących zalecana wersja 2.49a )
- OmsiXConv
- Notatnik
- OMSI Der Omnibussimulator
A więc zaczynamy...
1) Pobierz interesujący ciebie model z gry Vbus
2) Uruchom program Blender
3) Wczytaj plik .3ds autobusu tak jak jest to pokazane poniżej:
4) Wyświetli ci się model ( pomniejszony lub zdarza się przypadek że będzie powiększony )
5) Wciśnij przycisk na klawiaturze "S" i przesuń myszkę w lewo/prawo powoli
6) Scaluj model do odpowiednich rozmiarów:
7) Zaznacz dowolny obiekt aż wyświetlą się na różowo krawędzie obiektu
Aby zaznaczyć kilka obiektów przytrzymaj CTRL i zaznaczaj obiekty
8) Na wszelki wypadek sprawdź czy model jest dobrze oteksturowany klikając tutaj...:
... Blender może się przyciąć ale nie należy się niepokoić problem po momencie ustąpi
A. Jeśli model jest oteksturowany to pomiń punkt B
B. Jeśli nie jest - kliknij tutaj:
● Otwórz zakładkę "UV/Image Editor"
● Następnie pojawia się takie coś:
● Kliknij przycisk "ALT + N" a następnie "ALT + O" i wyszukaj plik graficzny odpowiadający za teksturę obiektu. Po wybraniu zamiast tego co było w poprzednim obrazku pojawi się to:
● Teraz wejdź tutaj:
● Zmień z "Textured" na "Solid"
● Wracasz do punktu wyjściowego A
9) Zapisz obiekt przy pomocy poniższego obrazka:
● Teraz pokażą ci się opcje zapisu
● Domyślne opcje zmieniasz na:
● I klikasz na "Export Sel"
● Wybierasz miejsce docelowe zapisu
10) Powtarzasz wszystkie powyżej wymienione punkty przy wszystkich obiektach modelu
Jesteś już po pierwszej części konwertowania modelu do OMSI...
... Teraz czas na obsługę programu
OmsiXConv.
A więc lecimy dalej...
11) Uruchom program OmsiXConv
12) Sprawdź czy są ustawione poniższe opcje [ 13) ]
13) Naciśnij "Conwert"
14) Wyszukaj plik .x i wybierz go
15) Teraz w lewym dolnym rogu zapali się czerwona lampka.
Poczekaj aż zgaśnie ( będzie to oznaczać że plik jest gotowy jako plik .o3d )
16) Czytaj punkt 10)
Teraz twój obiekt jest gotowy do wstawienia go do gry OMSI.
17) Wejdź w folder
Cytat: ( .../m-r software/Omsi/Vehicles )
18) Zrób kopię obojętnie jakiego modelu.
19) Przejdź do
Cytat: (.../m-r software/Omsi/Vehicles/<Nazwa Kopii>/Model
20) Otwórz plik <nazwa>.cfg
21) Zaznacz CTRL+A i następnie DELETE. I rozpocznij dodawanie obiektów wpisując poniższe linijki:
Cytat:[mesh]
<nazwa_obiektu>.o3d
[matl]
<nazwa_tekstury_obiektu>.bmp
0
[matl_envmap]
envmap.bmp
0.1
22) Teraz wklej pliki .o3d do folderu:
Cytat: (.../m-r software/Omsi/Vehicles/<Nazwa Kopii>/Model
23) Oraz tekstury do folderu:
Cytat: (.../m-r software/Omsi/Vehicles/<Nazwa Kopii>/Texture
24) Czytaj punkt 16)
Uruchamiamy OMSI Der Omnibussimulator i sprawdzamy owoc naszej pracy.
**********************************************************************
Jak zrobić poziome wycieraczki ( takie jak w M121MB lub Solarisie Urbino 10 )?
25. Otwieramy Blender
26. Importujemy model
27. Zaznaczamy wycieraczki ( jeżeli są połączone to kliknij TAB, a następnie P i wybierz "Separate All Loose Parts )
http://screenshooter.net/3125937/yatinvt
28. Exportuj obydwa obiekty do .x
29. Uruchom OmsiXConv
30. Exportuj pliki .x do .o3d
31. Otwórz plik model.cfg twojego modelu
32. Wklej poniższy wpis:
Kod:
[mesh]
nazwawycieraczkiodstronydrzwi.o3d
[illumination_interior]
0
1
2
3
[newanim]
origin_trans
0.000
0.000 << Tu podmień na współrzędne patrz pkt.13
0.000
origin_rot_x
0
origin_rot_y
0
origin_rot_z
90
anim_rot
wiperpos
95
[mesh]
nazwawycieraczkipostroniekierowcy.o3d
[illumination_interior]
0
1
2
3
[newanim]
origin_trans
0.000
0.000 << Tu podmień na współrzędne patrz pkt.13
0.000
origin_rot_x
0
origin_rot_y
0
origin_rot_z
-90
anim_rot
wiperpos
95
//////////////////////////////////////
33. Wróć do blendera i wciśnij N i wyświetli się taka ramka
http://screenshooter.net/3125937/ttjektt
34. Zaznacz dany obiekt i wciśnij TAB
35. Tabelka zmieni się na taką jak poniżej
http://screenshooter.net/3125937/cmvpuob
36. Istnieje możliwość i zwracaj uwagę czy współrzędne obiektu są ustawione na "Local" czy "Global". Musi być "Global"
37. Zaznacz miejsce obrotu na obiekcie
http://screenshooter.net/3125937/dqkmybl
38. Wyświetlą ci się współrzędne które przepisz do wpisu w pliku .cfg
39. Jeśli wszystko zrobiłeś poprawnie to efekt powinien być taki jak na screenie poniżej:
http://imageshack.us/photo/my-images/690/szyba2.png/
Jak zrobić przycisk?
40. Otwierasz Blender
41. Importujesz model
42. Zaznaczasz przycisk na pulpicie który chcesz użyć
43. Exportuj go do .x
44. Otwórz OmsiXConv i exportuj plik .x do .o3d
45. Wróć do blendera, wciśnij TAB, zaznacz środek obiektu
46. Odczytujesz współrzędne z "Global" i zapamiętujesz je.
47. Otwierasz plik model.cfg i wklejasz tam takie coś:
Kod:
[mesh]
nazwaobiektu.o3d
[mouseevent]
nazwakomendy*
[newanim]
origin_trans
0.000
0.000 << Tu podmień na współrzędne patrz pkt.7
0.000
origin_rot_x
0
origin_rot_y < tu wpisujesz współrzędne według jakich obiekt ma się obrócić
0
origin_rot_z
0
anim_rot
nazwakomendy*
-90
* komendy znajdziesz w pliku cocpit.osc który znajdziesz w folderze Script
Efekt będzie taki że wyświetli się przycisk i po przyciśnięciu zmieni swoje położenie według twoich ustawień
http://screenshooter.net/5588348/jehllhd
Jak zrobić kontrolkę?
48. Otwórz Blender
49. Importuj model
50. Zaznaczasz kontrolkę na pulpicie która ma się świecić
http://screenshooter.net/3125937/tswlegb ( na screenie nie widać tego za bardzo ale wiadomo o co chodzi )
51. Exportujesz model do .x
52. Otwórz OmsiXConv i exportuj model do .o3d
53.Otwórz plik model.cfg i wklej poniższy wpis:
Kod:
[mesh]
nazwakontrolki.o3d
[matl_change]
teksturakontrolki.bmp
0
tu_wpisz_komendę_kiedy_kontrolka_ma_sie_swiecic*
[matl_item]
[matl_nightmap]
teksturapodświetlenia.bmp
---------------------------------------
*komendy kontrolek znajdziesz w pliku lights.osc w folderze Script
Efekt jest taki:
http://screenshooter.net/5588348/aqxuwpn
***********************************************************
KOŁA
54. Otwieramy Blender
55. Importujemy model
56. Scalujemy model ( Albo wczytać zapisany model z poprzedniej sesji "Recover Last Session" )
57. Importujemy plik z kołem ( zazwyczaj jest to plik kp/kt.o3d )
58. Ustawiamy go w blenderze w odpowiednim miejscu czyli we wnęce do koła i dobrze scalujemy.
59. Po dokładnym umieszczeniu exportujemy do pliku .x
60. Po zapisie wracamy do naszego modelu i zaznaczamy bieżnik koła:
61. Wciskamy na klawiaturze "N" i wyświetla nam się coś takiego:
62. Następnie wciskamy TAB i zmienia nam się ramka:
63. Zmieniamy z "Local" na "Global"
64. Otwieramy plik model.cfg za pomocą Notatnika i dodajemy taki wpis:
Kod:
**********************************************************************
Räder
**********************************************************************
Es folgen nun die Räder, 0=vorne, 1=hinten, bei DIESEM Bus, es richtet sich nach den Achs-Einträgen.
[mesh]
<nazwa_obiektu>.o3d
[illumination_interior]
-1
-1
-1
-1
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
0.532
Drehung ist nicht notwendig, da die Räder sich ja um die X-Achse drehen.
anim_rot
Wheel_Rotation_0_R
57.295779513082320876798154814105
Bei Achsanimationen wird die Variable in rad übergeben.
[newanim]
origin_rot_y
-90
anim_trans
Axle_Suspension_0_R
1
Es folgt die Lenkung:
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_y
90
anim_rot
Axle_Steering_0_R
57.295779513082320876798154814105
[mesh]
<nazwa_obiektu>.o3d
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
anim_rot
Wheel_Rotation_0_L
57.295779513082320876798154814105
[newanim]
origin_rot_y
-90
anim_trans
Axle_Suspension_0_L
1
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_y
90
anim_rot
Axle_Steering_0_L
57.295779513082320876798154814105
[mesh]
<nazwa_obiektu>.o3d
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
anim_rot
Wheel_Rotation_1_R
57.295779513082320876798154814105
[newanim]
origin_rot_y
-90
anim_trans
Axle_Suspension_1_R
1
[mesh]
<nazwa_obiektu>.o3d
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
anim_rot
Wheel_Rotation_1_L
57.295779513082320876798154814105
[newanim]
origin_rot_y
-90
anim_trans
Axle_Suspension_1_L
1
************************************************************
To co jest w < > należy odpowiednio podmienić
65. Zapisujemy plik model.cfg
66. Konwertujemy pliki .x do formatu .o3d
67. Kopiujemy pliki do folderu "Model" a tekstury do "Texture"
68. Uruchamiamy OMSI i sprawdzamy koło
69. Jeszcze 3 razy powtórzyć te wszystkie kroki i mamy wszystkie koła.
70. Należy zwracać uwagę czy koła odpowiednio się kręcą, jeśli nie - poprawić liczby x,y,z.
DRZWI
71. Otwieramy Blender
72. Importujemy model
73. Scalujemy model ( Albo wczytać zapisany model z poprzedniej sesji "Recover Last Session" )
74. Importujemy plik .3ds
75. Po dokładnym umieszczeniu exportujemy do pliku .x
76. Po zapisie wracamy do naszego modelu i zaznaczamy drzwi
77. Wciskamy na klawiaturze "N" i wyświetla nam się coś takiego:
78. Następnie wciskamy TAB i zmienia nam się ramka:
79. Zmieniamy z "Local" na "Global"
80. Otwieramy plik model.cfg za pomocą Notatnika i dodajemy taki wpis:
Wpis dla modelu 2-drzwiowego
Kod:
###############################################
Türen
[mesh]
<nazwa_obiektu>.o3d
[viewpoint]
3
[matl]
D92_03.bmp
0
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
D92_01.tga
0
[matl_envmap]
envmap_unscharf.bmp
10
[matl_bumpmap]
SD80_bump.bmp
0.05
[matl_transmap]
-----------------------------
[matl]
regen.tga
0
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
0
[alphascale]
Dirt_Norm
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
Fenster_int.tga
0
[matl_noZwrite]
[matl_envmap]
envmap.bmp
0.15
[matl_alpha]
2
-----------------------------
[matl]
Fenster_int.tga
0
[matl_envmap]
envmap.bmp
1
[matl_alpha]
2
[alphascale]
Envir_Brightness
[matl_noZwrite]
-----------------------------
[matl]
D92_01.tga
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
regen.tga
1
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
1
[alphascale]
Dirt_Norm
[matl_alpha]
2
-----------------------------
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_0
-135
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_0
130
[mesh]
<nazwa_obiektu>.o3d
[viewpoint]
3
[matl]
D92_03.bmp
0
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
D92_01.tga
0
[matl_envmap]
envmap_unscharf.bmp
10
[matl_bumpmap]
SD80_bump.bmp
0.05
[matl_transmap]
-----------------------------
[matl]
regen.tga
0
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
0
[alphascale]
Dirt_Norm
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
Fenster_int.tga
0
[matl_noZwrite]
[matl_envmap]
envmap.bmp
0.15
[matl_alpha]
2
-----------------------------
[matl]
Fenster_int.tga
0
[matl_envmap]
envmap.bmp
1
[matl_alpha]
2
[alphascale]
Envir_Brightness
[matl_noZwrite]
-----------------------------
[matl]
D92_01.tga
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
regen.tga
1
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
1
[alphascale]
Dirt_Norm
[matl_alpha]
2
-----------------------------
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_0
135
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_0
-130
+++++++++++++++++++++++++++++++++
[mesh]
<nazwa_obiektu>.o3d
[viewpoint]
3
[matl]
D92_03.bmp
0
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
D92_01.tga
0
[matl_envmap]
envmap_unscharf.bmp
10
[matl_bumpmap]
SD80_bump.bmp
0.05
[matl_transmap]
-----------------------------
[matl]
regen.tga
0
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
0
[alphascale]
Dirt_Norm
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
2
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
Fenster_int.tga
0
[matl_noZwrite]
[matl_envmap]
envmap.bmp
0.15
[matl_alpha]
2
-----------------------------
[matl]
Fenster_int.tga
0
[matl_envmap]
envmap.bmp
1
[matl_alpha]
2
[alphascale]
Envir_Brightness
[matl_noZwrite]
-----------------------------
[matl]
D92_01.tga
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
regen.tga
1
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
1
[alphascale]
Dirt_Norm
[matl_alpha]
2
-----------------------------
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_1
-135
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_1
130
+++++++++++++++++++++++++++++++++
[mesh]
<nazwa_obiektu>.o3d
[viewpoint]
3
[matl]
D92_03.bmp
0
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
D92_01.tga
0
[matl_envmap]
envmap_unscharf.bmp
10
[matl_bumpmap]
SD80_bump.bmp
0.05
[matl_transmap]
-----------------------------
[matl]
regen.tga
0
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
0
[alphascale]
Dirt_Norm
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
D92_03.bmp
2
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
[matl_lightmap]
D86_03_L1.bmp
lights_beleuchtung_unterdeck
-----------------------------
[matl]
Fenster_int.tga
0
[matl_noZwrite]
[matl_envmap]
envmap.bmp
0.15
[matl_alpha]
2
-----------------------------
[matl]
Fenster_int.tga
0
[matl_envmap]
envmap.bmp
1
[matl_alpha]
2
[alphascale]
Envir_Brightness
[matl_noZwrite]
-----------------------------
[matl]
D92_01.tga
1
[matl_transmap]
D86_trans.tga
[matl_alpha]
2
[matl_noZwrite]
-----------------------------
[matl]
regen.tga
1
[matl_alpha]
2
[alphascale]
Rain_Window_Norm_Wetness
[matl_noZwrite]
-----------------------------
[matl]
D_dreck.tga
1
[alphascale]
Dirt_Norm
[matl_alpha]
2
-----------------------------
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_1
135
[newanim]
origin_trans
1.009 <Tutaj podmienić na to co jest w blenderze w "Global"
-2.968 <-||->
0.518 <-||->
origin_rot_x
0
origin_rot_y
-90
origin_rot_z
0
anim_rot
door_1
-130
To co jest w < > należy odpowiednio podmienić
81. Zapisujemy plik model.cfg
82. Konwertujemy pliki .x do formatu .o3d
83. Kopiujemy pliki do folderu "Model" a tekstury do "Texture"
84. Uruchamiamy OMSI i sprawdzamy drzwi
85. Jeszcze 3 razy powtórzyć te wszystkie kroki i mamy wszystkie drzwi.
86. Należy zwracać uwagę czy drzwi odpowiednio się otwierają, jeśli nie - poprawić liczby x,y,z.
*******************************************************************
Wyświetlacze
87. Otwórz Blender
88. Importuj model
89. Utwórz "Plane" i dostosuj go do rozmiarów i położenia wyświetlacza.
90. Oteksturuj obiekt służący za wyświetlacz teksturą ( w zależności od rodzaju wyświetlacza czy to wyświetlacz linii czy kierunku ) Matrix_Ziel_font.bmp lub Matrix_Linie_S.bmp
91. Exportuj obiekt oraz skonwertuj go w OMSIXConv
92. W pliku .cfg swojego modelu umieść taki wpis:
Kod:
[mesh]
wyswietlacz kierunek (np.).o3d
[matl]
Matrix_Ziel_font.bmp
0
[useTextTexture]
2 <---------- tu wybierasz czcionkę, u mnie akurat Matrix_Terminus ma numer 2
[matl_alpha]
2
[matl_lightmap]
Matrix_Ziel_font_LM02.bmp <----- dzięki tej linijce podświetlenie wyświetlacza uruchamiane jest przy włączeniu prądu
elec_busbar_main
******************************************************************
Lusterka
93. Otwórz Blender, importuj swój model
94. Odnajdź lusterka lub lusterka w nich
95. Jeśli lusterka nie posiadają oddzielonego obiektu na lustra:*
a) Zaznacz fragment obiektu służący za lustro,
b) Podziel go klikając "P"
* - Jeśli lusterka posiadają już wydzielone lustra pomiń podpunkty
96. Oteksturuj lusterka texturami ReflexionX.bmp ( w miejscu X przeważnie jest cyfra od 1 do 3 )
97. W swoim pliku .cfg umieść poniższy wpis
Kod:
-------lustra---------
[mesh]
nazwapliku.o3d
[matl]
reflexion1.bmp
1
[matl_envmap]
envmap.bmp
0.1
------------------
[mesh]
nazwapliku.o3d
[matl]
reflexion2.bmp
1
[matl_envmap]
envmap.bmp
0.1
------------------
[mesh]
nazwapliku.o3d
[matl]
reflexion0.bmp
1
[matl_envmap]
envmap.bmp
0.1
===================
98. Następnie eksportuj swoje obiekty w blenderze do .x a następnie do .o3d
99. W pliku .bus swojego modelu należy wpisać współrzędne położenia lusterek ( tak jak w przypadku kół, drzwi itd. ) aby lusterka pokazywały to co powinny.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Poradnik by Nick™. Zakaz powielania oraz rozpowszechniania poradnika.