Alex

Гайд по конвертированию и добавлению объектов

27 сообщений в этой теме

Источник: http://www.citiesinm...ad&threadID=576

Я сейчас более-менее разобрался с форматом CiM * и могу создавать новые объекты. Все еще очень сыро, относительно хлопотно и чревато ошибками.

Но так как я, видимо, в ближайшие недели не смогу заниматься этим, то я пущу это в полуготовом состоянии в народ.

*) Но еще не хватает некоторых вещей – кто хочет покопаться в hexeditor, приглашаю попробовать.

Я пытался задокументировать мой прежний опыт в src\gs.h

Отважные могут также попытаться следовать остальному исходному коду, он, конечно,... не совсем хорош

Краткая инструкция:

Примечания:

- В качестве переходного формата я использовал формат Wavefronts OBJ. Испытано исключительно с Blender.

- ggw поддерживает только одну текстуру на каждый объект (и только эту текстуру – прочие характеристики материала игнорируются)

- в качестве формата текстуры, работает, вроде только DDS

- нужно больше времени и готовности, чтобы что-то попробовать

1) скачать gs_tools.zip (см. приложение) и разархивировать

2) Экспортировать модель Blender в OBJ ( Optionen siehe Bild)

Вы получите файлы с форматами .obj и .mtl

post-1-0-33344000-1301650179_thumb.jpg

3) С помощью gsobj_import.exe конвертировать в формат CiM.

Затем получают два файла: output.object и output.material

post-1-0-30948500-1301650182_thumb.jpg

4) В папке addons создать новую папку (в качестве bsp здесь 'tvtower') и создать в ней две подпапки : 'scripts' и 'objects'

Копировать output.object в addons\tvtower\objects (переименовать: здесь tvtower.object)

5) Копировать output.material в addons\tvtower\objects и переименовать:

! Имя файла материала должно соответствовать имени, которое Blender при экспорте дал материалу

- Чтобы найти его, открыть созданный на шаге 2 файл mtl в текстовом редакторе - строка 'newmtl xxxxxx' даст имя материала (имя файла: xxxxx.material)

(кто хочет, может изменить его также до шага 3), но тогда должен согласовать указания 'usemtl' в файле .obj)

Не забудьте скопировать текстуру в addons\tvtower\objects.

6) В addons\tvtower\objects создайте .scripts-файл с соответствующим именем (tvtower.script, в данном случае) со следующим кодом:

 this.width = 5;
this.height = 45;
this.length = 5;
this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;
this.diagonals = 0x0000;
this.type = GRID_ITEM_BUILDING;

this.displayName = "TVTower";

$price = 1234500;

$displayName и $price можете придумывать сами. Габариты (ширина, высота, длина) можно рассчитать по следующей формуле: находим измерения модели в Блендере и делим на 3 (с округлением)

post-1-0-99613100-1301651474_thumb.jpg

7) В addons\tvtower\scripts создаём файл 'environment.script', в нём код:

// get addon path 
$BasePath = extractFilePath(extractFileDir(this.scriptFilename));
$ObjectPath = $BasePath + "objects/";

function loadBuilding($category, $name, $model)
{ 
   MAIN.$grid.loadGridObject($name, $model+".object");
   if (defined MAIN.$level.$buildings[$category]) {
       MAIN.$level.$buildings[$category][] = $name;
   } else {
       MAIN.$level.$buildings[$category] = [$name];
   }
}

loadBuilding("landmarks", "tvtower", $ObjectPath+"tvtower");  // ladt objects/tvtower.object

8) Затем запускаем игру, и, я надеюсь, всё работает :)

post-1-0-70029000-1301651476_thumb.jpg

Если что-то не работает:

- Первой отправной точкой является log_metro.txt

- Проверяем .mtl / .obj-файлы, правильно ли согласованы все названия

- Созданные с помощью gs_dump.exe .material и .object файлы, проверяем и их названия.

Удачи!

Программа Blender:

http://www.blender.org/

gs_tool_v0.1:

gs_tools_v0.1_20110324.zip

_____________________________________________________________________________

Лично я запоролся на 3 пункте :D При конвертировании (это нужно делать при помощи командной строки) мне выдало ошибку текстуры, и это, судя по всему, потому, что на объекте (я скачал какой-то небоскрёб) было больше одной текстуры. В общем, ждём доработок, ну и хвастаемся успехами, если у кого будут. :)

3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
:( на 64бит не запускается gsobj_import.exe чо делать :unsure:
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Оно в принципе и не должно запускаться - нужно добираться до этого файла через командную строку. Вообще весь механизм ещё не доработан (и автор сам пишет об этом), так что в данный момент это всё скорее для ознакомления выложено.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может не туда пишу но объясните или дайте ссылку где сказано как менять текстуры объектов? или в аську кто-то у кого есть время? (358231905) хочется разнообразить объекты и перекрасить их, поменять текстуры? сделать розовые деревья? и можно ли поиграть с разметкой? а так же на немец сайте видел текстуру разметки выкладывали, там вроде можно закрасить центральную полосу бульвар например в другую текстуру?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Andrew, нужно распаковать файл objects.gs, в полученной папке найти папку нужного объекта, и изменить текстуры, они в файлах .dds.

Подробнее о текстурах здесь: http://citiesinmotion.ru/download/guids/old-add-vehicle

Там на примере автобуса, но со зданиями всё аналогично, в принципе.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не получается

Командная строка выдает:

working dir: .

reading: 'znak80.obj' ...

reading: 'znak80.mtl' ...

*error*: face definition needs vertex & tex & normal index

:( :( :(

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Новую версию gs_tools можно скачать отсюда: http://www.bytetransfer.de/projects/cim/tools/

Кроме того, вот инструкция по конвертированию от Hybrid87 (не переводил, поскольку сам по инструкции ничего не делал и боюсь перевести что-то неверно):

1. Create the model in Zmodeler and texture as *.DDS files.

2. Export it to *.OBJ (you will get an *.OBJ and a *.MTL file).

3. Open the OBJ file in notepad and give the object a name (just add "o [name]" as a seperate line somewhere).

4. Use the gs_tool (http://www.citiesinmotion.net/index.php?page=Thread&threadID=576 - downlaod from the first post) and using command line codes convert them to *.OBJECT and *.MATERIAL (the same files the game uses).

5. Delete the material file, because it is completly useless.

6. Copy an original MATERIAL file from the game

7. Open the new MATERIAL file with a hex editor

8. Change the material name (used in Zmodeler) and the texture file names > Save

9. Make the scripts and enjoy the game ;)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хм. в командной строке прописываю адрес самого приложения. а как указать адрес обжа, кот. надо сконвертировать?

п.с. уже ок всё. сравнительно.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а с Google SketchUp 8 работать будет? а то с блендерем не особо дружу.

а все нашел конвертер форматов sketshupа в obj

Изменено пользователем artemyi
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а как можно игровые модели открыть? Ссори если было

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3-и пункт преодолел)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

седьмой пункт остался. ч хз че делать. игра с данным скриптом(конечно имена заменил) не запускается(редактор карт точнее). подскажите, что с кодом делать и как

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

artemyi, просмотри эту тему, там Hybrid87 достаточно подробно всё расписывает, может найдётся что-то и по твоей ошибке.)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

function loadBuilding($category, $name, $model)

{

MAIN.$grid.loadGridObject($name, $model+".object");

if (defined MAIN.$level.$buildings[$category]) {

MAIN.$level.$buildings[$category][] = $name;

} else {

MAIN.$level.$buildings[$category] = [$name];

}

}

поясните вот эту часть.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Новую версию gs_tools можно скачать отсюда: http://www.bytetransfer.de/projects/cim/tools/

И все равно на 64бит семерке не пашет! :angry:

Появляется и сразу исчезает окно, ничего не пишет

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И все равно на 64бит семерке не пашет! :angry:

Появляется и сразу исчезает окно, ничего не пишет

Вы не открываете это как программу. Это - command line tool (Не знайте, как перевести это).

Вот мини-учебное руководство, как работать с GS_Tools.

У меня есть Windows 7 с 64 битами и латвийский интерфейсный язык.

У меня есть GS_Tools в B:\3D\gs_tools. Я переименовал gsobj_import.exe файл в i.exe (это намного легче для меня).

1. Это - моя gs_tools папка - я хочу преобразовать 1.obj в object, и она использует 464.dds в качестве файла текстуры.

qhwa9pvq.png

2. Откроите CMD (Start>>, пишет "CMD" в поиске и открывает это).

zedtb3n3.png

3. Это - CMD, если кто-то не знает.

r22jupy9.png

4a. Откройте необходимую папку. (в моем случае, я изменяю диск при записи буквы диска "B:")

vkv7u8oh.png

4b. Затем я пишу "cd 3d\gs_tools" (cd - команда, чтобы изменить папку).

7o6hn4kp.png

5. Теперь я пишу команду, чтобы преобразовать файлы:

gsobj_import.exe file.obj (в моем случае, команда похожа на это - i.exe 1.obj, так как я переименовал EXE-файл).

874mryag.png

6. У нас есть output.object и output.material файл, и теперь мы делаем это:

5. Delete the material file, because it is completly useless.

6. Copy an original MATERIAL file from the game

7. Open the new MATERIAL file with a hex editor

8. Change the material name (used in Zmodeler) and the texture file names > Save

9. Make the scripts and enjoy the game

P.S.

Все команды CMD здесь.

P.P.S.

Sorry for google translator - I was in a hurry :)

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В чем может быть ошибка? post-396-0-94290900-1319736160_thumb.jpg

В каком месте дописывать имя в блокноте? У меня не получается ничего

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У файла OBJ нет названия объекта в нем.

Откройте файл OBJ с Блокнотом и только такой линией где-нибудь в файле (это не имеет значения где):

o [name]
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде все конвертировалось.

Скопировал и изменил материал и скрипт файлы. Игра запускается, но там моей модели не найду.

Посмотрите плз что не так или чего не хватает.

Должно получиться что то вроде этого post-396-0-39910400-1319741850_thumb.jpg

1.rar

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Некоторые незначительные ошибки сценариев:

1. У Вас не было scripts/environment.script файла, который дает заказы игре, чтобы загрузить объект.

2. У Вас не было strings/en_US.string файла, который должен показать в игровом имени объекта.

Я изменил это (См. прикрепленный файл), и это начинало загружать это в игре.

Но это дало следующую ошибку:

Start map editor

Loading editor...

Error: Runtime error in "metro/scripts/environment.script" at line 91: Internal error!

Error: Called from "addons/1/scripts/environment.script" at line 3

Error: Runtime error in "metro/scripts/environment.script" at line 212: Internal error!

Closed log in "userdata/log_metro.txt".

В этом случае только переконвертировайте obj файл еще раз и замените старый object файл. Это обычно помогает.

1.rar

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Некоторые незначительные ошибки сценариев:

1. У Вас не было scripts/environment.script файла, который дает заказы игре, чтобы загрузить объект.

2. У Вас не было strings/en_US.string файла, который должен показать в игровом имени объекта.

Я изменил это (См. прикрепленный файл), и это начинало загружать это в игре.

Но это дало следующую ошибку:

В этом случае только переконвертировайте obj файл еще раз и замените старый object файл. Это обычно помогает.

:angry: Ничего не получается.

Пробовал экспортировать и конвертировать obj со всеми возможными настройками, но так и не понял в чем причина.

У меня gsobj_import выдает .object и .material_new файлы. Так и должно быть?

Нужно ли триангулировать модель и UV перед экспортом? И так ли важно как называется модель в 3D max?

После экспорта, внутри файла obj, она называется именем слоя почему то. :huh:

(Блендер и прочее не предлагать)

А может проблема в материале? Если скрипты еще более менее понятны, то hex редактор это слишком.

Можно ли поподробнее про материал? Неясно куда именно, после каких знаков вписывать названия .dds файлов.

Что хорошего делают ссылки на разные bmp и png файлы и .._i.dds для чего? непонятно..

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

на выходных решил попробовать помоделировать с помощью blender

долго мучился, скажу что пришлось поменять в исходных obj и mtl несколько больше, чем здесь рекомендовалось

почему-то даже при выставлении relative ссылок, в исходниках все равно пути записываются относительно blender файла, в итоге удалил все пути, оставив файлы в этой же папке и все заработало!

вот такая минимоделька получилась

post-175-0-44746800-1320043121_thumb.jpg

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

охохо, если вы сделаете пак хоршо проработанных небольших объектов будет чудено)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

OlegSS, классно! :D

Кстати, посмотрел на скрин - и вспомнил: самое важное, что нужно добавить - памятник Ленину. :D

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу