Автор Тема: Небходима помощь по написанию экспрта в свой формат на языке Python.  (Прочитано 1911 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн LanuHum

  • Житель
Остального не знаю... И мне непонятно с чего ты взял, что координаты вершины должны быть целыми переменными (int), а не вещественными (float) ?
int, float... это ты о чём?

Оффлайн Samovar

  • Житель
  • Пятигорье
Это я о типах переменных...
¯\_(ツ)_/¯

Оффлайн LanuHum

  • Житель
Это я о типах переменных...
Наверное, я что-то упустил. Я не видел, где там выше и кто писал о типах переменных...

Оффлайн Samovar

  • Житель
  • Пятигорье
....а действительно, картинка меня сбила с толку и немного невнимательно прочёл... Извиняюсь, Bulbash, если речь про порядковые индексы, то конечно целые числа...
Может быть это чем-то поможет: http://blender.stackexchange.com/questions/36577/how-are-vertex-indices-determined
¯\_(ツ)_/¯

Оффлайн LanuHum

  • Житель
Я как писатель своего движка выбрал блендер (он бесплатен). Раньше я пользовался .obj форматом вполне успешно.
Но настало время использовать скелетную анимацию. И я понял что проще и эффективнее всего будет написать свой скрипт для экспорта. Изучил синтаксис языка Python и посмотрел пару видеуроков как им пользоваться в Blender смог создать в меню File->Export нужную мне клавишу. Но уже два дня никак не могу понять как мне ПРОГРАМНО посчитать количество мэшей в сцене(т.е проигноривать остальные обьекты такие как камера свет и прочее). Кто знает как это реализуется пожалуйста подскажите. Могу предоставить код уже написаного мной скрипта если кому надо.
Только сейчас прочитал с чего всё началось. Дело в том, что, если брать из API данные в один файл типа: вершины, кости, ключи анимации, то в финале самому придётся рассчитывать все деформации. Только недавно с Samovar мы об этом беседовали...
На мой взгляд, если честно, то уже и редактор в свой движок дописать легче, чем юзать Блендер.

Оффлайн Samovar

  • Житель
  • Пятигорье
Не, я малёха другое тогда имел ввиду, т.к. ты хотел скорость. И предлагал нижеперечисленное читать из памяти или из Blend-файла, минуя экспорт с помощью Python в свой формат:
http://www.atmind.nl/blender/mystery_ot_blend.html
http://www.atmind.nl/blender/blender-sdna.html
... а если скорости не надо, то вполне достаточно знаний Python и его API к Блендеру, чтобы написать экспортёр в свой формат...это программно  реализовать на  Python проще гораздо... Но я ни того ни другого не знаю, увы, чтобы чем-то помочь :)
¯\_(ツ)_/¯

Оффлайн LanuHum

  • Житель
Вообще-то, мне на сайте поврея разработчик оффициальной версии экспортёра povray давал ссылку вот на эту лабуду:
https://wiki.blender.org/index.php/Dev:2.5/Source/Architecture/RNA
Во все игровые движки, как и в другие программы работающие с 3д, очень бы было хорошо впилить блендер как чисто сишную библиотеку. Я в свою прогу впиливаю его как сишный модуль питона, а, вот надо бы впилить как сишную библиотеку, чтобы функции возвращали не PyObject, а С структуры.
Умереть не встать...
Жил бы я в деревне, ел бы я блины...

Оффлайн LanuHum

  • Житель
... а если скорости не надо, то вполне достаточно знаний Python и его API к Блендеру, чтобы написать экспортёр в свой формат...это программно  реализовать на  Python проще гораздо... Но я ни того ни другого не знаю, увы, чтобы чем-то помочь :)
Свой движок чел пишет для чего? Подозреваю, что для игры. Это что за игра, не требующая скорости в 2016 году?

Оффлайн Bulbash

  • Житель
LanuHum я уж ухватился за блендер (на другом форуме посоветовали). Поэтому буду ковыряться тут.
Лучше подскажите мне правильно ли понял я ваш код:
faces_verts = [] - обьявляю массив
for f in me_faces: - иду в цикле по индексам
    face_verts.append(f.vertices[:]) - добавляю в массив нужные мне данные

если все правильно поясните как узнать размер массива faces_verts.

Оффлайн Samovar

  • Житель
  • Пятигорье
Цитировать
Свой движок чел пишет для чего? Подозреваю, что для игры. Это что за игра, не требующая скорости в 2016 году?
Дык, он же для того экспортёр в свой формат (формат своего движка) и пытается написать, что бы была скорость и не было лишней инфы, которая жрёт память... и этот экспорт происходит только один раз, а не как в твоём случае для фотореалистичного рендера  - покадрово... так что ему нечего беспокоится о скорости, ему просто надо конвертнуть необходимый контент в свой формат  и оптимизировать его один раз, "который будет проигрывать его движок"...
Под скоростью, имелась ввиду скорость экспорта / импорта :)
¯\_(ツ)_/¯

Оффлайн LanuHum

  • Житель
LanuHum я уж ухватился за блендер (на другом форуме посоветовали). Поэтому буду ковыряться тут.
Лучше подскажите мне правильно ли понял я ваш код:
faces_verts = [] - обьявляю массив
for f in me_faces: - иду в цикле по индексам
    face_verts.append(f.vertices[:]) - добавляю в массив нужные мне данные

если все правильно поясните как узнать размер массива faces_verts.
size = len(faces_verts)
Цитировать
Свой движок чел пишет для чего? Подозреваю, что для игры. Это что за игра, не требующая скорости в 2016 году?
Дык, он же для того экспортёр в свой формат (формат своего движка) и пытается написать, что бы была скорость и не было лишней инфы, которая жрёт память... и этот экспорт происходит только один раз, а не как в твоём случае для фотореалистичного рендера  - покадрово... так что ему нечего беспокоится о скорости, ему просто надо конвертнуть необходимый контент в свой формат  и оптимизировать его один раз, "который будет проигрывать его движок"...
Ты в этом хорошо шаришь, я нуб. Нет, я не подъёхиваю. Я знаю одно, что даже очень отличный программист может очень далеко стоять от крутой идеи, также, как и тракторист может нести идею программисту, а тот, весь из себя, не слышыт полезного совета, типа, я ж программист, а ты - тракторист. Поэтому, я говорю, что шаришь. Ты понимаешь механизмы работы этих игр. Я не понимаю. Я никогда не интересовался играми, потому что главная игра - жизнь у меня не играется.  :)

Оффлайн Samovar

  • Житель
  • Пятигорье
Цитировать
Ты понимаешь механизмы работы этих игр. Я не понимаю.
Да чего тут понимать? Суть то одна и таже. Просто он из Блендера берёт только, то что умеет его движок,  а тебе для экспорта в POV-ray всё равно придётся покадрово экспортировать, т.к. он сам тебе ни физику, ни остальное не посчитает, а парню это не надо, его движок это сам рассчитывает... У вас принципиально разные задачи...
¯\_(ツ)_/¯

Оффлайн LanuHum

  • Житель
Цитировать
Ты понимаешь механизмы работы этих игр. Я не понимаю.
Да чего тут понимать? Суть то одна и таже. Просто он из Блендера берёт только, то что умеет его движок,  а таебе для экспорта в POV-ray всё равно придётся покадрово экспортировать, т.к. он сам тебе ни физику, ни остальное не посчитает, а парню это не надо, его движок это сам рассчитывает... У вас принципиально разные задачи...
Всё-равно не понимаю. На хрена ему кости, если не важно знать в каком кадре какая кость куда повёрнута?
Я представляю, что движок рассчитывает варианты положения вершин при определённой ситуации, типа, падение перса, кувырок там какой-то. Но, зачем кости тогда, если можно держать в памяти скомпилированные позиции?

Оффлайн Samovar

  • Житель
  • Пятигорье
Игровые движки давно уже считают скелетную анимацию и производители видюх активно продвигают физические ускорители типа PhysX (Nvidia). Это всё считается не процом... Ты ж пойми, что это реалтайм :)  Тебе надо хотя бы в Half-Life  2 (2004 г.) погонять  https://ru.wikipedia.org/wiki/Half-Life_2
или посмотреть видео...
https://youtu.be/Ka7ObnyGfnM
сейчас игры гораздо круче...

Можешь скачать этот движок https://ru.wikipedia.org/wiki/Unreal_Engine
https://www.unrealengine.com/unreal-engine-4
Он с недавнего времени бесплатен, пока ты не занимаешься коммерческой деятельностью на нём...
Цитировать
Текущая политика лицензирования: Unreal Engine 4
2 марта 2015 года Unreal Engine 4 стал бесплатным. Однако, разработчики игр, как и прежде, должны передавать 5 % от прибыли игры компании Epic Games, но при условии, что доходы игры составляют более $3000 за квартал.

Видео https://youtu.be/JA5VlncAr74
« Последнее редактирование: 12 Ноября 2016, 22:30:02 от Samovar »
¯\_(ツ)_/¯

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
>> Unreal Engine 4
... по ходу для разработки под него нужно хорошее железо, а вот unity3d по сравнению с ним шустрик ...
... кстати, unity3d умеет такое https://www.youtube.com/watch?v=SKpKlh1-en0  https://www.youtube.com/watch?v=9Rwd26k7K-E
Для Кота

 

* По форуму

* Последние вложения

Снимок 1.PNG
Скачано: 1
Автор: atmk
Снимок.PNG
Скачано: 0
Автор: atmk
Screw.jpg
Скачано: 5
Автор: Dmi3ryd
Cylinder_animation.gif
Скачано: 6
Автор: Dmi3ryd
seit1.jpg
Скачано: 9
Автор: sandman