Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [3D] Autodesk 3ds Max
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
ed_rez
Policai,
ищи X-Ray tools(2017-august) - unofficial.
WolfHeart
Цитата(ed_rez @ 27.10.2019, 13:45) *
ищи X-Ray tools(2017-august) - unofficial.

Есть такой в коллекции: X-Ray tools(2017-august) - unofficial
А разве в нем есть скрипт подходящий под описание Policai?
ed_rez
WolfHeart,
сам я не пользуюсь прямой загрузкой ogf, так как знаю минусы в этом. Но помню именно в этой версии добавлен импорт ogf. Могу ошибаться.
Я работаю только с форматом object, который несет в себе больше информации, благодаря конвертеру от Бардака.
***
Позабавили споры про сглаживание. После СДК сглаживание так и так будет подогнано под возможности СДК. Сглаживание правится на раз-два в 3D редакторах. Другое дело со всей другой геометрией, вот там все на много интереснее.
Если не выбираться с СДК и там делать свалку объектов, то это мартышкин труд. Чтобы получить удовлетворительное качество, то без 3Д редактора никак.
Но не нужно считать, что ПЫС были криворукие. Я еще веселее вижу/видел в том же МИ и прочих играх.
WolfHeart
Цитата(ed_rez @ 27.10.2019, 14:18) *
Но помню именно в этой версии добавлен импорт ogf. Могу ошибаться.

Честно говоря я этот пакет себе не ставил, но вот нашел источник с описанием Источник, и судя по всему там добавлен только чек инвалид фейсов.
ed_rez
WolfHeart,
значит я ошибся за неиспользованием этой возможности. Своим прошлым постом я подсказал, как лучше. Не вижу смысла придумывать колесо.
Если человеку нужно просматривать модели, быстро открывая... То есть ogfviewer, вроде так утилита обзывалась.
Ну или уже перебраться на порядок ниже редактором и юзать Milkshape. Которого хватит для оружия за глаза.
Policai
Нет в нём нужного скрипта..((( Проверил.

ed_rez,

Изучать милку в добавок к максу для меня уже не актуально, но иногда сейчас возникает необходимость открыть в максе именно огф, без конвертироывания в смд или обжект...
ed_rez
Policai,
тогда используй OGF Converter 1.2.1. Удар клавишей по батнику и вылетает нормальный формат для плагина Макса. Не советую юзать прямой импорт в редактор. Тому пример, убитые модели при открытии в Милкшэйп прямым игровым форматом.
Это уже расписано множество раз. Ибо эта проблема ни раз поднималась, про сглаживание, про двусторонние полигоны, а также вывернутые,...
Делай, как пишу и будут тебе достойные исходные модели для работы.
Pavel_Blend
Policai, я не проверял, но вот скрипты, которые импортируют ogf в макс. По крайней мере в описании так написано:
https://files.xray-engine.org/nattefrost/

Там архив внизу под именем xrmt_max_20131229.7z
ed_rez
Pavel_Blend,
скелет слетает. Сглаживание умирает.
OGF plugin vs X-Ray tools(2017-august) - unofficial
vs
Trollz0r
Не разобрался в вашей упоротой дискуссии, но, возможно, плагины от den-stash - то, что нужно?
ed_rez
Люпус Эст,
так и я о чем.
X-Ray tools(2017-august) - unofficial и есть в основе за авторством этого модмейкера.
WolfHeart
Цитата(ed_rez @ 27.10.2019, 23:54) *
X-Ray tools(2017-august) - unofficial и есть в основе за авторством этого модмейкера.

ed_rez, В основе, но уже с правками и дополнениями друхих авторов.
Самыми последними, чисто от den-stash, пожалуй вот эти: X-Ray tools(2016-august) - unofficial
Те, о которых говоришь ты: X-Ray tools(2017-august) - unofficial - это уже с правками и дополнениями от Virus_UA. Причем не известно доподлинно, какую именно версию скриптов он редактировал.
А были еще: max_scripts_update - которые так -же были сделаны поверх неизвестной версии: Пост SkyLoader
И были еще версии скриптов: X-Ray tools(2016-august) - unofficial и X-Ray_3Ds_Max_tools_2016_R1 - ссылок на источники которых, я сейчас не найду.
Так что тут уже хрен разберешь, где чьи лапы морда хвост. biggrin1.gif
ed_rez
WolfHeart,
ты прав, поэтому я и про основу и написал. Остальных я не всех знаю, кто участвовал в доработке. Т.к. в моих ридми, они же оригинальные, указаны только:
Автор: Dan-Stash
Обновил: Scarabay
Знаю, что были и другие, но не в курсах кто. Возможно где-то в скриптах спрятаны копирайты, но сколько файлов не открывал, столько не видел ничего подобного про авторство. Печалька.
Policai
Цитата(Pavel_Blend @ 27.10.2019, 19:48) *
Policai, я не проверял, но вот скрипты, которые импортируют ogf в макс. По крайней мере в описании так написано:
https://files.xray-engine.org/nattefrost/

Там архив внизу под именем xrmt_max_20131229.7z


Это не тот, этот просто убивает скелет и импортирует обжект. а там был именно скрипт а не плагин, и импортировал со скелетом, текстурами и анимациями... ((
Pavel_Blend
Я делаю уровень в блендере. Возникли некоторые трудности. Хочу сделать скалы как на радаре:

Вопрос к картоделам:
как сделать аналогичные скалы в 3д максе/майе? Мне главное понять принцип. И потом, попробую аналогично сделать в блендере.
Policai
Муторная работа, ручками, я себе на локации круговые делал дня 3.... Андрей Непряхин когда то скидывал мне пример, может поможет, и где то на ютубе есть видео как делать многоярусную скалу, но без озвучки и очень быстро всё, я скачивал и на медленной скорости просматривал, но делал по тому примеру.

https://youtu.be/wpa70IHIhgM
Pavel_Blend
Policai, наверное способ из твоего видео не подойдёт. Результат другой получается. Мне кажется, что gsc при моделировании скал, делали каждый булыжник по отдельности, а потом объединяли булевыми операциями. Но я не знаю, как можно сделать таким способом много скал, например, 3-4 километра вокруг уровня. Придётся создавать сотни объектов, а потом применять булевый модификатор к каждому из них. Это очень долго. Плюс, нужно будет удалять полигоны с верху, снизу и с другой стороны булыжников. Поэтому ищу другой способ.
T-braze
Цитата(Pavel_Blend @ 13.11.2019, 19:40) *
Поэтому ищу другой способ.

Ну булеанами уж точно не стоит делать smile.gif
Как вариант, такие скалы можно заскульптить, а затем применить Decimate. На скриншоте выше, судя по сетке, примерно так и делалось наверное.
Yara
Цитата(T-braze @ 14.11.2019, 00:06) *
Как вариант, такие скалы можно заскульптить...

Хороший вариант,
пять минут и готово:

Pavel_Blend
Не, скульптом я замучаюсь каждый камень вырисовывать. А сделать просто гору, без выпуклых камней мне не нужно. Пока сделал так:
создал плоскость и применил к ней дисплейс. Потом поверх плоскости рассыпал камней (сделал из кубика и добавил сабсёрф и дисплейс). В итоге получил следующее:

Потом объединил камни и плоскость с помощью булена:

Хочу сделать несколько вариаций таких кусков скал, и потом их выстроить в линию и объединить. И можно будет пустить по кривой эту линию скал, чтобы обогнуть вокруг уровня.
WolfHeart
Pavel_Blend
WolfHeart, посмотрел видео. И это не совсем то, что мне нужно. Я хочу сделать как на радаре скалы, а не как в билдовском кордоне. На радаре отчётливо видно, что скала состоит из отдельных камней, а не просто ровный обрыв.
WolfHeart
Цитата(Pavel_Blend @ 13.11.2019, 22:11) *
На радаре отчётливо видно, что скала состоит из отдельных камней, а не просто ровный обрыв.

Ну вообще-то в видео показан примитивный вариат, просто принцип, а меняя Folloff, Pinch, Bubble, можно это дело разнообразить и добиться других результатов. Кроме того, если ты не заметил, при включении Use Soft Selection, с левой стороны появляется окошко с доп. инструментами. Я когда то пробовал по этому видео делать скалы, мне нравился результат.
Попробуй может и тебе подойдет.
xrModder
Кто-нибудь знает в какой последовательности устанавливается Product Updates, Service Packs и Hotfix к Max 2013?
Reactor Failure
Всем привет. Ищу информацию по поводу создания или редактирования худ-моделей оружия в 3d max. В принципе модель открыл в 3d max при помощи скриптов, что нужно проделал с моделью, сохранил и отправил в Actor Editor. Там назначил извлеченные из этой же модели настройки bones и анимации. Однако при проигрывании в режиме engine модель всю дербанит в разные стороны, разрывает и плющит. Видимо настройки костей сбиваются или что. Кто-нибудь сталкивался с подобным?
Shoкer
1) Ты какими скриптами \ плагинами пользовался? Сейчас по идее самые актуальные это от Dan-Stash: https://ap-pro.ru/forum/106-92141-1
Если пользуешься ими, то в СДК тебе с костями ничего проделывать не нужно, только анимации назначить.
2) Судя по всему слетела привязка (Модификатор Skin - Envelope в 3Ds Max). Используй плагин выше, он позволяет ещё импортировать исходники сталкерской анимации (skl, skls) в редактор, и можно прямо там проверить корректность отображения. Если на модель добавлял новые элементы или удалял вертексы то тоже могла слететь.
Reactor Failure
Цитата(Shoкer @ 21.04.2020, 22:27) *
1) Ты какими скриптами \ плагинами пользовался? Сейчас по идее самые актуальные это от Dan-Stash: https://ap-pro.ru/forum/106-92141-1
Если пользуешься ими, то в СДК тебе с костями ничего проделывать не нужно, только анимации назначить.
2) Судя по всему слетела привязка (Модификатор Skin - Envelope в 3Ds Max). Используй плагин выше, он позволяет ещё импортировать исходники сталкерской анимации (skl, skls) в редактор, и можно прямо там проверить корректность отображения. Если на модель добавлял новые элементы или удалял вертексы то тоже могла слететь.

Спасибо большое за ссылки. А дело было в максе. Не понятно почему 2014 макс ломал модели вот таким образом. Переустановил и всё заработало.
Rolan96
Всем салют!
В 2018 максе создал анимацию для персонажа.
Скриптами Дена Сташа экспортнул в АЕ. Там анимация проигрывается нормально. Добавляю в игру, но персонаж только дергается, а анимации нет.
В чем может быть проблема?
проверил анимацию. Перегнал полученный omf в skls и загрузил снова в макс, анимация там корректная.
Логика
[walker@def]
invulnerable = true
gather_items_enabled = false
corpse_detection_enabled = false
help_wounded_enabled = false
meet = no_meet
use_camp = false

[logic]
active = remark;

[remark]
anim = amic_stay_hello
on_signal = action_end | walker1

[walker1]:walker@def
path_walk = stay_hello_end_walk
path_look = stay_hello_start_look

state_lib
amic_stay_hello = { weapon = "strapped",
movement = move.stand,
mental = anim.free,
bodystate = move.standing,
animstate = nil,
animation = "amic_stay_hello"
},

state_mgr_animation_list
amic_stay_hello = {prop = { maxidle = 1,
sumidle = 1,
rnd = 100},
into = { [0] = {"amic_stay_hello"}},
out = nil,
rnd = nil,
idle = nil},
}
Fervor
Здравствуйте, подскажите пожалуйста, как можно импортировать локацию из игры в 3ds max со всеми объектами, в том числе растительность, и со всеми материалами к ним ? Или же такого способа нет и часть объектов в любом случае придется импортировать отдельно и расставлять вручную ? Спасибо.
macron
Fervor, вот здесь видел уже портированные.
Fervor
macron, благодарю, но результат там конечно такой же - нету расстительности.
Rolan96
Разобрался с анимацией. Она проигрывается, всё ок.
Теперь возник вопрос. В сдк стоит два смарт кавера, нпс туда заходят и отыгрывают свою анимацию, всё ок.
Но почему расстояние между смарт каверами не корректируется на близком расстоянии? Есть либо самый минимум, как на первом скриншоте и второе расстояние как на втором, а необходимо поставить персонажа чуть левее чем на втором скриншоте, но не выходит.


Rolan96
решения не нашел. Пришлось переделать анимацию.
aka_sektor
aka_sektor
aka_sektor
Ещё пачка уроков:
Урок «Основы создания модели объекта в 3D MAX»

Урок «Сплайновое моделирование интерьера»

Урок «Объемное рисование в 3DS Max»

Урок «Мультисплайновое моделирование»
mortan
Ищу человека, который очень хорошо шарит за скриптовый API 3d max'a, нужно кое-какой код перетащить из аддона для блендера но своими силами не получается сделать. Конкретно интересует кое-что связанное с загрузкой меша, в сдк и блендере задуманное удалось сделать, а вот с 3д максом возникли проблемы.
mortan
Привет, может ли кто помочь с переносом кода из скриптов дена под C++?
В данный момент застрял на импорте ЗП сглаживания, код в max скрипте выглядит так:
Код из скрипта
Код
SGa = for i = 1 to NumFaces collect readlong f #unsigned
local SGUsed = #{}
local SGroup = 0
local SGStack = #(), SGStackPos = 0
local SGFaces = #(#()), var = #{}

for i = 1 to m.numfaces where not SGUsed[i] do
(
    SGroup += 1
    SGStackPos += 1;
    SGStack[SGStackPos] = i
    format "# GLOBAL POS = %\n" i
    local d = i
    SGFaces[1][SGroup] = #{}
    
    while true do
    (
        FaceInd = SGStack[SGStackPos];
        SGStackPos -= 1
        SGUsed[FaceInd] = true
        --setFaceSmoothGroup m FaceInd (2^SGroup)
        append SGFaces[1][SGroup] FaceInd
        
        --format "SGroup = %\n" SGroup
        for i = 1 to 3 where bit.and SGa[FaceInd] (2^(3-i)) == 0 do
        (

            ei = (FaceInd - 1)*3 + i                    
            ope = meshop.getEdgesReverseEdge m ei
            
            --format "rev edges count = %\n" ope

            for j in ope do
            (
                k = (j-1)/3 + 1
                if not SGUsed[k] then
                (
                    SGStackPos += 1
                    SGStack[SGStackPos] = k
                    SGUsed[k] = true
                )
            )
        )
        
        if SGStackPos < 1 then exit
    )
    
)

--format "file sg groups count = %\n" SGroup

-- remove undefined
--for i = 1 to SGFaces[1].count do format "%, %\n" i SGFaces[1][i]
for i = SGFaces[1].count to 1 by -1 do if SGFaces[1][i] == undefined then deleteitem SGFaces[1] i
    
-- sort by face count
qsort SGFaces[1] compareSG

for i = 1 to 32 where SGFaces[i]!=undefined and SGFaces[i].count>1 do
(
    var = meshop.getVertsUsingFace m SGFaces[i][1]
    --format "i = %\n" i
    
    for j = 2 to SGFaces[i].count do
    (
        v = meshop.getVertsUsingFace m SGFaces[i][j]
        if (var*v).numberset == 0 then
        (
            join var v
            join SGFaces[i][1] SGFaces[i][j]
            --format "\tjoin %\n" j
        )
        else
        (
            k = i+1
            if SGFaces[k] == undefined then SGFaces[k] = #()
            append SGFaces[k] SGFaces[i][j]
            --format "remove sg from % to %, %\n" i k SGFaces[i][j]
        )
    )
)

for i = 1 to 33 where SGFaces[i] != undefined and SGFaces[i].count > 0 do
(
    if i == 33 then
    (
        for j in SGFaces[i] do
        (
            for k in j do
                setFaceSmoothGroup m k (2^(i-1))
            setfaceselection m  j keep:true
        )
        
        setuserprop m "badsg" SGFaces[i]
        if SGFaces[i].count > 1 then format "some smoothing groups are not correct\n"
    )
    else
        for j in SGFaces[i][1] do setFaceSmoothGroup m j (2^(i-1))
)


Проблемы возникли с первой частью где собственно идёт раскидывание фейсов по группам, вторая часть это оптимизация групп чтобы не было лишних.
Моя попытка:
C++ код
Код
                
        int SGroup = -1;
        int SGStackPos = -1;

        std::map<unsigned int, unsigned int> SGStack;
        std::map<unsigned int, bool> SGUsed;
        std::map<unsigned int, std::vector<unsigned int>>; SG_;

        for (int i = 0; i < faces.size(); i++)
        {

            if (SGUsed.count(i) == 0)
            {
                SGroup += 1;
                SGStackPos += 1;
                SGStack[SGStackPos] = i;

                while (true)
                {
                    unsigned int FaceInd = SGStack[SGStackPos];
                    SGStackPos -= 1;
                    SGUsed[FaceInd] = true;

                    SG_[SGroup].push_back(FaceInd);

                    for (int n = 0; n < 3; n++)
                    {
                        if ((sgroups[FaceInd] & (4>>n)) == 0)
                        {
                            unsigned int edge = FaceInd * 3 + n;
                            unsigned int fi = (edge / 3), ei = (edge % 3);

                            int redge = getReverseEdge(mod->faces, mod->numFaces, fi, faces[fi].v[ei], faces[fi].v[(ei + 1) % 3]);
                            //uint32_t k = getAdjFace(mod->faces, mod->numFaces, fi, faces[fi].v[ei], faces[fi].v[(ei + 1) % 3]);

                            int k = redge / 3;

                            if (SGUsed.count(k) == 0 && k!=UNDEFINED)
                            {
                                SGStackPos += 1;
                                SGStack[SGStackPos] = k;
                                SGUsed[k] = true;
                            }
                        }
                    }

                    if (SGStackPos < 1) break;
                }
            }            
        }


Код для поиска ReverseEdge был взят из этой темы https://forums.cgsociety.org/t/getedgesreverseedge/1683206/7 так как внутри SDK API я не нашёл нужного функционала.
С восстановлением ТЧ сглаживания никаких проблем нет и оно отлично работает. Если кто заинтересуется, то могу выложить весь остальной код для плагина.
Pavel_Blend
Цитата(mortan @ 17.10.2020, 01:16) *
нужно кое-какой код перетащить из аддона для блендера

я в api макса не разбираюсь, но стало интересно, какой код из блендера тебе нужно перенести?
mortan
Pavel_Blend, это я пробовал организовать импорт нормалей, стандартно через скрипты не получалось, а вот в плагине это вышло, то есть я смог экспортировать их в новом формате из блендера и успешно прочитать в максе. Опять же, повторюсь, силами скриптов это не выходило(
macron
Инструкция: фикс *.object для импорта в 3ds Max (с плагинами от Den Stash), если при импорте идут ошибки типа "--No ""get"" function for undefined" и объект сливает все материалы в один. Также возможно исправятся аналогичные ошибки при импорте в Blender.

1. Запускаем ActorEditor (ТЧ/ЧН/ЗП наверно не важно).
2. Жмем File-Load. Загружаем наш object-файл.
3. Жмем File-Export-Export OGF. Сохраняем как ogf. Закрываем Actoreditor.
4. Используя прилагаемый converter.exe (или собственный), конвертируем наш ogf обратно в object:
можно выполнить команду "ogf2object.bat имя.ogf" или вручную "converter.exe -ogf -object имя.ogf".
На выходе получится новый object-файл.
5. Запускаем 3ds Max, импортируем этот новый object-файл.


https://disk.yandex.ru/d/iiy19lyCEb6LxQ
В архиве дубликат инструкции и конвертер. У кого всё есть, качать необязательно.
macron
Небольшое уточнение: если ЧН/ЗП ActorEditor вылетает при экспорте в OGF, используйте ТЧ ActorEditor, он менее привередливый.
Pavel_Blend
macron, а можно пример *.object файла, который выдаёт такую ошибку при импорте? Я пока ещё не встречал таких моделей, которые не импортируются в блендер. Есть конечно экзотические за 2001-2002 год, у которых формат анимаций старый. И есть пара файлов, которые повреждены и их сам AE не открывает. Но большая часть моделей из слива исходников и карт от gsc импортируются.
macron
Цитата(Pavel_Blend @ 28.07.2021, 17:54) *
а можно пример *.object файла, который выдаёт такую ошибку при импорте

Их есть у меня.
https://disk.yandex.ru/d/TNF2HEd_EpJhjA
Pavel_Blend
macron, в блендер импортировалось. Не знаю, почему в макс не импортируется. Я быстро посмотрел какие чанки хранит объект и меши, и увидел, что чанки стандартные, последних версий. Я думал у объекта будет устаревший чанк SURFACES.
macron
А бардаковским конвертером еще кто-нибудь занимается? Есть идея (для вышеописанной конвертации) при преобразовании ogf-object отключить автоматическую конвертацию статичных шейдеров и материалов в дефолтные динамические типа default_object. Так то система работает, но потом приходится по полчаса заново все материалы назначать, потому что конвертер их сбросил.
macron
Плагины для 3dmax от den-stash, теперь с пофиксенным импортом проблемных *.object.

https://disk.yandex.ru/d/ER2TzN144Zsnqg
WolfHeart
macron, А для чего в твоей сборке скрипты с припиской ****_old: xrTools.gui_old.ms, xrTools.LoadMotion_old.ms и xrTools.ObjectExport_old.ms?
Они выполняют какой-то функционал или это просто старые версии этих скриптов?
macron
Цитата(WolfHeart @ 06.01.2022, 09:11) *
это просто старые версии этих скриптов?

Очевидно, старые. И без них работает, были в сборке изначально, но я решил не колхозить, оставить как есть.
WolfHeart
Цитата(macron @ 06.01.2022, 11:22) *
но я решил не колхозить, оставить как есть.

Понятно. Просто я себе делал аналогичную сборку и эти файлы вычистил, посчитав их мусорными. Поколхозил немного. biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.