• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

    Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
    По желанию, аргументировать свой выбор можете в теме обсуждения голосования.

Тутор: Как избежать попадания текстур в Trash

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
К сожалению, изображения в теме побились...
Как избежать попадания текстур в Trash

Не пугайтесь, что тутор длинный. Просто тут много рисунков и все описывается очень подробно, чтобы поняли даже те, кто впервые видит 3ds max. :)

Для начала, надо обязательно настроить “User Paths” в которых надо указать дополнительные пути, в которых 3ds Max будет искать наши текстуры.
Для этого идем в меню Customize Configure User Paths
В появившемся окне, открываем вкладку External Files. Там жмем на Add и заходим в папку GothicII/_work/Data/Textures, обязательно ставим галочку Add Subpaths и жмем на кнопку Use Path.

Все, подготовка завершена, едем дальше…

Часть I.

Когда вы делаете локацию с нуля и назначаете ей текстуры, следите, чтобы название материала было точно таким же, как и название файла изображения.
Теперь тоже, но человеческим языком: Например, вы в качестве текстуры взяли файл nw_nature_branch_01.tga, тогда надо в поле, которое на рисунке ниже выделено красным, вписать название вашего файла, то есть nw_nature_branch_01.



И так с каждой текстурой. Если вы этого не сделаете, то велика вероятность того, что некоторые из текстур попадут в Trash. Ну, это наверно и так все знают.

Часть II.

А вот теперь самое основное. Чаще всего текстуры попадают в Trash не на этапе текстурирования локации, а на этапе совмещения двух 3ds файлов.
То есть, решили вы поставить на карту дом. Вы жмете на импорт, находите нужный вам 3ds дома, и импортируете его. Теперь если вы приаттачите дом к локации, то скорее всего часть текстур дома попадет в Trash.

Теперь о том, как этого избежать.
Импортируйте модель дома, который вы хотите поместить на карту, но пока его не приаттачивайте т.к. надо сначала поколдовать с его текстурами.
Выделите модель дома, откройте редактор материалов (клавиша “M”). Потом выберите, какой-нибудь пустой слот для вашего материала (на рисунке ниже выделен красным). Затем нажмите на кнопку Standard (на рисунке ниже выделена зеленым)



В появившемся окне, на панели Browse From выберите пункт Selected (на рисунке ниже выделено красным).



На последующие вопросы выбирайте пункты copy и discard old material

Получившийся Multi/Sub-Object материал теперь нужно применить для модели дома, для этого просто нажмите кнопку Assign Material to Selection (на рисунке ниже отмечена красным).



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

Сейчас объясню на примере, чтоб было понятнее:

Я создал на карте дом, загрузил и назначил на него текстуру, как было описано выше, теперь мне надо переименовать все подматериалы, которые содержаться в Multi/Sub-Object материале… Короче, рассказчик из меня хреновый, по этому смотрите на картинку ниже, так будет понятнее.



Так вот, если вы изучили картинку, то надо с каждым подматериалом сделать следующее:

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



А теперь надо на жать на кнопку Bitmap, которая выделена красным на рисунке ниже.
После этого у вас появится стандартное окно выбора файла, нам в нем ничего не нужно кроме названия файла. Копируем его, и возвращаемся на предыдущее окно. Для этого просто нажмите кнопку, которая на рисунке ниже выделена зеленым.



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



И так надо сделать с каждым подматериалом. После этого объекты можно спокойно аттачить и текстуры не попадут в trash… Ну по крайней мере у меня они туда не попадают :)

И на последок, если вам показался этот тутор очень длинным, то просто попробуйте все что здесь написано проделать сами, я уверен, что это гораздо удобнее, чем кажтый раз разгрибать trash.
 

marazmus

★★★★★★★★★★★
Основатель
Регистрация
7 Янв 2003
Сообщения
2.117
Благодарности
914
Баллы
385
Спасибо :)
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
[)r0n
Сомнительный способ, т.к. здесь в данном случае "левой"текстуре присваивается уже существующей НЕ в треше материал, в данном случае dt_bed_v1_1 и dt_bed_v1_2, с уже определенными для него свойствами в спейсере. Т.е. насильственная связь между материалом спейсера и текстурой осуществляется с помощью меша, которая может привести к глюкам текстур, если на этот материал в спейсере уже положена другая текстура (помните ветку из Г2а, или голову Бладвина, которая меняла окраску из-за кривости материалов, вот тоже самое и случиться). Не знаю, зачем такие извращения, если можно просто в спейсере для новой текстуры создать новый материал с нужными свойствами, всего-то изменив TRASH на любой другой, например EARTH (Земля), при этом материал сохраниться в папке материалов спайсера (_work\tools\data) и при каждой загрузке оного уже не будет в треше.
P.S. Видимо придется писать"правильный"тутор по работе с материалами, чтобы разные текстуры не вешали на один материал таким диким способом :)
 
Последнее редактирование модератором:

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
Советую сначала попробовать этот способ, а потом уже что-то утверждать.
Я затекстурил целую локацию, поместил на нее дерево, обработал способом, который показан в туторе. Потом дерево расклонировал, расставил по местам. И все это приаттачил к поверхности. При этом НИОДНА текстура не попала в Trash а все ее свойства сохранились и корректно работали. То есть листья проходились насквозь а дерево звучало как дерево. При этом не было никаких артефактов и глюков. И мне не надо было думать куда пихнуть тот или иной материал, все делалось само как то задумали разрабы.

И кстати, тот дедовский метод перемещения текстур из траша по нужным группам имеет серьезный для меня минус. Я импортировал на карту пару деревьев, меши для них разные, а текстуры одинаковые. И потом у меня в треше оказалось 2 одинаковые текстуры листьев и 2 одинаковые текстуры коры. Допустим я начал по старинке перекидывать их куда мне надо и что я получил? в разделе дерево 3 одинаковые текстуры, 1 стандартная, и 2 из траша. То есть идет натуральное захламление (мож я что-то не так делал? ). Да и лишний раз сидеть и думать куда лучше пихать очередную текстуру, которая опять попала в траш, просто надоедает.

Да и предствь теперь, а если у тебя модель замка, в которой несколько десятков разных текстур, а елси у тя на локации целый городок на подобии хориниса? Решетки, рамы, украшения, разные материалы... ну и т.д. И если большенство из них попадет в Trash? Сидеть и фасовать? По мне так легче предотвратить косяк, чем потом обнаружить, что у тебя в пещере паутина не проходиться на сквозь, а трава по звуку напоминает бетон.

А так у меня и не надо Trash постоянно расфасовывать, и все материалы на своих местах.

"левой"текстуре присваивается уже существующей НЕ в треше материал

Я не очень понял, что ты написал, :) но на импортируемом меше нет никаких левых текстур, ты просто поновой их накладываешь на модель, чтобы они отобразились в 3ds max, и была возможность переименовать названия материалов, что бы спейсер корректно их обработал и не поместил в Trash.

И еще, те текстуры которые попали в Trash они не левые, они нормальные, просто в 3ds max у них неверно заданы имена, и именно по этому они попадают в Trash.

И вообще данный глюк с попаданием текстур в Trash скорее всего можно исправить с помощью плагинов, просто надо поговорить с автором, которых их сделал, чтобы внес некоторые корректировки при импорте информации о материалах. Честно скажу, плагины никогда не писал, а уж тем более под 3ds max. По этому ничего утверждать не буду. Но сами текстуры в Спейсере имеют 2 названия: 1. Название файла изображения и 2. Название в фильтре текстур Спейсера. То есть, например, есть файл текстуры mowotreetop01.tga а она же в фильтрах спейсера почему-то помечена именем OW_FOREST_TREE_V2_1. Так вот. Если бы при импорте материалам назначалось имя текстуры (mowotreetop01.tga), тогда о таком понятии как “Текстуры опять попали в Trash” можно было бы вообще забыть и ничего не переименовывать.

Но пока есть, как оно есть. И ничего с этим не сделать. И для тех кто устал ковыряться с Tresh-ем я тутор и написал. Как говориться: «Хотел как лучше…» :)

Что-то я разошелся :D
 
Последнее редактирование модератором:

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
Это все конечно хорошо, но ведь есть ситуации, когда объект, который будем аттачить, содержит 40-80 субматериалов.. тогда уже руками не хочется ничего делать, да и порой железо не позволяет.
Вот как я заметил, критерием попадания в треш является не только неверное имя субматериала (не подходит под фильтры готики) но и их дублирование. Т.е spacer не может работать с двумя одинаковыми субматериалами, и он их переименовывает. Т.е было 2 штуки NW_Nature_stein_03 - получите "NW_NATURE_STE2" Я недавно написал скрипт на встроенном языке макса (для этого я его выучил за час), этот скрипт проходит по всему мультиматериалу и ищет все субматериалы с одинаковым именем текстуры (p.s вот надо бы еще добавить условие на воду, у воды ведь одинаковый TGA но разные свойства)"складывает"в один. Т.е: есть у нас, к примеру, 3 материала:

*NW_Nature_Stein_03
*NW_Nature_Stein_03 copy
*Default - 3042

Причем текстура у них у всех одинаковая. Скрипт должен взять только первый из них и удалить все остальные, а полигонам с ID удаленных материалов присвоить ID оставленного. Надеюсь, понятно объяснил.
вот спойлер со скриптом, кто может разобраться и поправить его - сделает большой вклад в текстурирование готических 3ds-ов

utility do_ClearMultiMaterial "Clear multi material"(
button go_"Go!"-- creating button

on go_ pressed do -- when pressed
(
if queryBox "This will delete all dublicated materials. Do you want to continue?"beep:false then -- if answer = yes
(
(
selected = getCurrentSelection() -- selected obj
if (selected[1].superClassOf == GeometryClass) then -- if it is geometry model
(
multi = selected[1].material -- take material
arr = for i = 1 to (getNumSubMtls multi) collect getSubTexmap multi i -- creating array of texture names
for first = 1 to (getNumSubMtls multi -1) do
(
for second = (first + 1) to (getNumSubMtls multu) do
(
if (arr[first]==arr[second])and(arr[first]!="") then -- looking for dublicated TGA's
(
setFaceMatID selected selectByMatID(second) first -- sets new ID to polygons with wrong ID
arr[second] = ""-- to avoid checking this element next time
)
)
)
MMclean.fixAll false -- standart script which delete not used submaterials in scene
messageBox"fixAll script done" return true -- means it's done
messageBox "Done!"
)
else messageBox"You should select one geometry object."-- if another obj selected
return False
messageBox "Failed"-- something goes wrong
)
)
)
)
 
Последнее редактирование модератором:

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
А у тебя какая версия 3ds max? А то у меня твой скрипт выдает ошибку на проверке класса объекта:

Код:
if (selected[1].superClassOf == GeometryClass) then

Даже если проверку совсем убрать, то дальше по коду выдает еще несколько глюков :(

А вообще идея со скриптом отличная, надо бы ее довести до победного конца, тогда вообще не придется с текстурами ковыряться.
В общем, сейчас бы пригодилась помощь kerrax - а. Он вроде как в скриптах 3ds max должен разбираться.
 

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
В общем, сейчас бы пригодилась помощь kerrax - а. Он вроде как в скриптах 3ds max должен разбираться.
Ну я ему писал в личку, но он не ответил. Так что выложил тут, может кто еще знает.

Макс у мя 2009, да там я и не все ошибки то пофиксил, поэтому и спрашиваю тут
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
F!G написал(а):
Ну я ему писал в личку, но он не ответил. Так что выложил тут, может кто еще знает.
Ты же сам мне написал, чтобы я не в личку тебе отвечал, а мылом!

[)r0n написал(а):
В общем, сейчас бы пригодилась помощь kerrax - а. Он вроде как в скриптах 3ds max должен разбираться.
Да помочь-то я не против. Только неплохо было бы вначале понять, в чем именно нужна помощь. Как вы вообще добиваетесь попадания текстур в trash? У меня просто так в trash ничего не попадало. Просто следить надо за именами материалов в максе и давать материалам имена, подходящие под фильтры спейсера, а не "2 - Default"и не"Material #1".

[)r0n написал(а):
То есть, решили вы поставить на карту дом. Вы жмете на импорт, находите нужный вам 3ds дома, и импортируете его. Теперь если вы приаттачите дом к локации, то скорее всего часть текстур дома попадет в Trash.
Если аттачите один меш к другому, то выбирайте *ВСЕГДА* опцию "Match Material IDs to Material"и далее *ВСЕГДА* ставьте флажок"Condense Material and IDs". Если вы этого не сделаете, то потом возможно будете разгребать последствия...
И, кстати, зачем вообще аттачить дом к локации? Крышу к стенам дома приаттачить, - это я еще понимаю, но дома/деревья к локации, по моему мнению, лучше вообще не аттачить.
 
Последнее редактирование модератором:

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
Просто следить надо за именами материалов в максе и давать материалам имена, подходящие под фильтры спейсера, а не "2 - Default"и не"Material #1".
ну это предохранение, а у нас уже последствия. Так что помоги со скриптом, пожалуйста) оч надо
Ты же сам мне написал, чтобы я не в личку тебе отвечал, а мылом!
Сорри, просто на мыло тоже ничего не приходило
 
Последнее редактирование модератором:

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
F!G написал(а):
ну это предохранение, а у нас уже последствия. Так что помоги со скриптом, пожалуйста) оч надо
Я так и не понял. КАК вы добиваетесь попадания текстур в трэш? Если ты просто не потрудился дать материалам правильные имена, то тут никакой скриптик уже не поможет - просто сиди и вручную материалы переименовывай. А давать материалам имена автоматически в соответствии с именем TGA-файла - это тоже не совсем умно будет, так как там слишком много исключений из этого правила. Хотя бы порталы (P: ...), которые часто используют одну и ту же текстуру, но материалы при этом разные и имена материалов у них тоже разные.
 
Последнее редактирование модератором:

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
как как..
варианты:

вариант 1
делаем, допустим, в максе горы и отдельным объектом землю с валунами какими нить.. накладываем любой материал и экспортируем (вот я лично очень долго не знал как текстурить в максе). В spacer-е открываем и текстурим это дело.. и допустим, на вершинах гор у нас трава.. и на земле трава.. при сохранении он соединяет 2 объекта и одинаковые текстуры переименовываются и идут в треш

вариант 2
делаем в максе объект, текстурим и не указываем материалам нужные имена. и так материалов 40 добавляем. сцена уже весомая, подлагивает при работе с поликами. И править имена всех 40 текстур это жутко долго, там ведь надо посмотреть TGA, скопировать, а если есть 2 одинаковых текстуры надо еще выбирать ненужные полигоны и менять ID. На исправление 2х дубликатов вполне может уйти минута, а если настроены всякие автобэкапы, вообще раздражает это дело

А давать материалам имена автоматически в соответствии с именем TGA-файла - это тоже не совсем умно будет
ну да, давать надо те имена, которые прописаны в фильтрах, это почти всегда и есть имена текстур. а как еще то не допустить трешевых?

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

p.s я то в самом начале создания мира текстурил именно в спейсере и из этого все проблемы и вышли, менять оч. проблематично руками. Думаю, не у одного меня так
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
А есть вариант, чтобы при помощи скрипта имя искалось не только в папках текстур, но и в мат фильтрах? ::)
 

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
Поскольку народ у нас любит говорить а не делать, то пришлось все искать самому. В общем, написал небольшой скрипт, который автоматически переименовывает все материалы так, что в Trash они не попадут.

Скрипт приаттачил к посту.

Для того, что бы все работало, надо обязательно настроить “User Paths” в которых надо указать дополнительные пути, в которых 3ds Max будет искать наши текстуры.
Для этого идем в меню Customize ->Configure User Paths
В появившемся окне, открываем вкладку External Files. Там жмем на Add и заходим в папку GothicII/_work/Data/Textures, обязательно ставим галочку Add Subpaths и жмем на кнопку Use Path.

После этого можно пользоваться скриптом. Работает он просто: Загружаете модель из игры (локацию, персонажа, меч и пр.), выделяете ее в окне 3ds max и нажимаете кнопку "Выправить имена". Все.

Файл скрипта кидать в папку <3ds max>/Scripts/Startup. Чтобы запустить скрипт на вкладке Utilities нажмите кнопку MAX Script. Там в списке Utilities выберите Gothic Texture Fix.

Скрипт писал впервые и под 3ds max 9 по этому за работу на других версиях не ручаюсь.
 
Последнее редактирование модератором:

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
Посмотрел скрипт.. разобрался, но там есть недочеты
у некоторых материалов нет текстуры, но они подходят под фильтры (обычные порталы\ гостокклюдеры) - надо такие обходить. Еще надо ввести дополнительное условие на воду, т.е если TGA воды - ничего не менять (тут только руками)
спасибо, вобщем.
вот эти моменты я сам смогу пофиксить, но еще хотелось бы удаление одинаковых, как я описывал, смогешь?

p.s асю дашь? поговорим о скриптах этих. Мы друг удругу полезны, я тебе про spacer могу рассказать что нить еще, а ты скрипт сбацаешь. Вот такой модмейкерский обмен

p.p.s а в скрипте вот это добавь :
flNm = meditMaterials[1].material.diffusemap.filename
if (flNm!=""and((findString flNm"WFALL")==undefined) and((findString flNm"WATER")==undefined) and((findString flNm"LAKE")==undefined) ) then (все что идет далее до скобки)
)
else showTextureMap meditMaterials[1].material on


кстати, а нужно ли указывать полный путь к текстуре в имени материала? помоему, она в таком случае тоже попадет в треш) так что надо отрезать весь кусок с путем к текстуре. То есть надо еще и отпарсить имя файла и убрать все, что до последнего "\".
 
Последнее редактирование модератором:

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
кстати, а нужно ли указывать полный путь к текстуре в имени материала? помоему, она в таком случае тоже попадет в треш) так что надо отрезать весь кусок с путем к текстуре. То есть надо еще и отпарсить имя файла и убрать все, что до последнего "\".

Это еще один баг. Корректно плагин работает только с моделями импортированными из форматов 3ds и asc. Т.к. при импорте из них информация о пути к текстуре теряется, остается только название, вот по этому названию 3ds max будет искать текстуру в папках, записанных в “User Paths”
Пока могу только посоветовать экспортировать твою модель в формат 3ds или asc (смотря какого плана модель) а потом экспортировать обратно в max. Потом можно плагином выправлять имена текстур. Т.к. при импорте информация о путях к текстурам потеряется, то соответственно эти пути в имя материала не попадут.
Да и еще тонкость, важно чтобы текстуры которые назначены на модель лежали или в _work/data/textures/... или в любой другой папке, которая прописана в “User Paths”.

вот эти моменты я сам смогу пофиксить, но еще хотелось бы удаление одинаковых, как я описывал, смогешь?

Честно говоря не уверен, т.к. только вчера решил в скриптах max-а поковыряться. Но вообще могу попытаться. Опять же, не помешала бы помощь kerrax, все таки он в этом разбирается ГОРАЗДО лучше.

p.p.s а в скрипте вот это добавь :

Если в скрипте еще что нить исправишь, то выкладывай сюда обновленную версию. Будем народными усилиями доводить скрипт до идеала. :D

p.s. на счет icq. Я тут какое-то время на Маил.Агенте сидел, но потом снес его. А асю пока что ставить лень... :(
 
Последнее редактирование модератором:

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
Это еще один баг. Корректно плагин работает только с моделями импортированными из форматов 3ds и asc. Т.к. при импорте из них информация о пути к текстуре теряется, остается только название, вот по этому названию 3ds max будет искать текстуру в папках, записанных в “User Paths”
Ты, видать, меня не понял) я о том, что скрипт наш называет материалы по полному имени текстуры, с путем к папке и т п. А надо называть только именем текстуры, без пути. иначе через фильтры не пройдет. Т.е добавить одну строку в скрипте
Опять же, не помешала бы помощь kerrax, все таки он в этом разбирается ГОРАЗДО лучше.
Он же говорит что надо было просто сразу называть правильно материалы, у него же проблемы нет - значит ему не надо)

Честно говоря не уверен, т.к. только вчера решил в скриптах max-а поковыряться.
если я тебе объясню логику, как это делается, напишешь?

и все таки асю заведи! полезная штука. p.s качай клиент QIP
если что, моя ася есть в профиле

выкладываю обновленную версию скрипта, обходящую стороной воду и порталы
 

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
Ты, видать, меня не понял) я о том, что скрипт наш называет материалы по полному имени текстуры, с путем к папке и т п. А надо называть только именем текстуры, без пути. иначе через фильтры не пройдет. Т.е добавить одну строку в скрипте

Тоесть надо просто от строки, которую получаем через diffuse.filename отрезать путь? Я правильно понял?

если я тебе объясню логику, как это делается, напишешь?

От чего бы не попробовать. Пиши будем думать.
Хотя честно говоря я с дублирующимися текстурами не сталкивался, т.к. текстурю полностью в max-е. А воду добавляю в самый последний момент.

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

Ну пускай хотя бы с высоты своего опыта посмотрит на код, может что исправит.

P.S. А я комменты в коде написать не догадался :D
 

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
Тоесть надо просто от строки, которую получаем через diffuse.filename отрезать путь? Я правильно понял?
угу, именно

От чего бы не попробовать. Пиши будем думать.
пишу:
Берется мультиматериал с выделенного. Пробегая по субматериалам, собираем имена текстур. В итоге у нас есть массив, где элементу N соответствует текстура субматериала с ID=N.

Далее двойной цикл для сравнения каждого элемента массива с каждым. При условии, что найдены одинаковые имена текстур и это не вода и не пустая строка, выделяем все полигоны с дублирующимся ID у выделенного объекта и присваиваем им ID материала, который мы оставляем.

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

[)r0n

Участник форума
Регистрация
2 Май 2009
Сообщения
43
Благодарности
0
Баллы
150
F!G
С дублирующимеся текстурами у меня глюка нет. По этому скрипт придется у тебя тестить. Я пока попробую исправить все глюки в коде который ты выше писал. Когда исправлю выложу.
Можешь пока что написать код, чтобы путь отрезать?
 

F!G

Забанен
Регистрация
11 Мар 2008
Сообщения
26
Благодарности
0
Баллы
150
С дублирующимеся текстурами у меня глюка нет. По этому скрипт придется у тебя тестить
дак ты создай вручную) что делов то, я для теста твоего скрипта так и сделал. Делаешь саб, 3 материала с кривыми именами, причем 2 из них с одинаковой текстурой
Можешь пока что написать код, чтобы путь отрезать?
сейчас думаю как отпарсить все, что после последнего бэксслэша. до первого было бы понятно
 
Сверху Снизу