Разработка и ромхакинг > Ромхакинг и программирование
SGDK
<< < (28/40) > >>
megavolt85:
SeregaZ, да кириллица в пути не должна мешать, если винда не кривая

SeregaZ:
ну на том то скрине явно было видно ???? вместо букв. впрочем это может быть из-за самого батника. то есть в каком виде туда вписывались буквы. если это был скажем анси формат, а потом винда будет юзать юникод, то все поплывет. английские то что там что там одинаковые, а вот наши - будут каракули.
ALKOSHA:

--- Цитата: megavolt85 от 03 Июль 2019, 00:33:48 ---pip install numpy и будет тебе счастье
--- Конец цитаты ---

Вместо щастья получил попаболь.
Или я шото не так делою...  o_0
megavolt85:
открой консоль в директории с установленным pip
у меня так


у тебя наверно где то в Program Files

C:\путь_к_python\Scripts
Skay:
ALKOSHA, у тебя похоже python не прописался в переменные среды при установке.
ALKOSHA:

--- Цитата: Skay от 03 Июль 2019, 22:46:06 --- у тебя похоже python не прописался в переменные среды при установке.

--- Конец цитаты ---
аааааааааааааааааааа
Ну там был чекбокс с надписью PATH но он был снят по-умолчанию. Я и решил не трогать.

Добавлено позже:
Так-с... numpy модуль установил.
Но всё равно.
megavolt85:
переустанови питон и не забудь отметить чтоб PATH прописался

P.S. под виндой проверял на python2.7, под линуксом на 2.7 и 3.6, скрипт везде работает
Skay:
megavolt85, меня смущает что у него там пытается произвестись запуск как на линуксе:

--- Код: ---/bin/env python

--- Конец кода ---
ALKOSHA, попробуй как нибудь из разряда

--- Код: ---"C:\Program Files\Python37\python.exe" obj2mesh.py -f dd2.obj > meshs.h
--- Конец кода ---
или

--- Код: ---cd "C:\Program Files\Python37\"
python.exe *полный_путь*\bj2mesh.py -f *полный_путь*\dd2.obj > *полный_путь*\meshs.h

--- Конец кода ---
megavolt85:

--- Цитата: Skay от 04 Июль 2019, 10:22:52 ---меня смущает что у него там пытается произвестись запуск как на линуксе:
--- Конец цитаты ---

это нормально, открой любой питоновский скрипт и первое что ты увидишь #!/bin/env python
путь к питону берётся из переменной среды, в винде это %PATH%, в никсах env

дословный перевод ошибки:
невозможно создать процесс используя /bin/env python путь/к/скрипту/скрипт параметры

/bin/env возвращает содержимое %PATH%, так что ошибка логична при условии что:

--- Цитата: ALKOSHA от 03 Июль 2019, 22:49:42 ---Ну там был чекбокс с надписью PATH но он был снят по-умолчанию. Я и решил не трогать.
--- Конец цитаты ---
ALKOSHA:

--- Цитата: Skay от 04 Июль 2019, 10:22:52 ---попробуй как нибудь из разряда
--- Конец цитаты ---


 И так, и сяк (питона деинсталлировал, и поставил уже галочкой напротив PATH )

ALKOSHA:
Попробовал в выполнении скрипта  поставить в начале строки py -3
Оно вроде бы чуток продвинулось ноо... 



pip проапгрейдил, если что.
Sharpnull:
ALKOSHA, скрипт же для Python 2, он встретил print без скобок. С помощью 2to3 можно автоматически исправить. Вот обновлённый скрипт.
--------
Я исправил ещё раз, чтобы можно запускать просто:

--- Код: ---obj2mesh.py -f dd2.obj 1>meshs.h
--- Конец кода ---
Ошибка была в shebang, нужно писать так:
--- Код: ---#!/usr/bin/env python3
--- Конец кода ---
--------
То есть путь был нестандартный, поэтому не запускалось. А py -3 переопределял эту настройку. Для Python 2 следовало написать так же, но с python2 в строке. (stackoverflow)
--------
Кстати, чтобы обновить все установленные пакеты в pip, в командной строке выполнить:

--- Код: ---for /F "delims===" %i in ('pip freeze -l --all') do pip install -U %i
--- Конец кода ---
Добавил --all чтобы обновить всё. Если установлен Python 2 и Python 3, то нужно использовать pip2 и pip3, а не просто pip.
ALKOSHA:
Sharpnull, благодарствую!

Скрипт пашет.
339 полигонов в кадре с плоскостным освещением = 4..5 фпс.
Сежка не вывезет моих амбиций, мистеры скептики ?  ;)

Но дальнейший ход событий всё равно не гладко проходит:
Затестить я решил на своей давнишней сценке,которую ещё пилил для Pmmx под софтвар рендерер.

https://vk.com/wall-145919754_156


(ныне затекстурил, если кому интересно: https://vk.com/wall-145919754_521)

Так вот. Из макса -> в 3ds, затем в блендер, а оттуда-> в obj + mtl (цвета в максе/блендере отображаются как и положено).
Перегнал скриптом в хэдер.
Скомпильнул - индексы цветов пока не смог наладить, всё однородное. Словно всем материалам модели присвоен один индекс. (в хэдере mesh.h пустой массив присвоения цветов почему-то.
const u16 Box07_face_color[338] = {};
)

И ещё.. тут деревцо в кизяк скукожило, тоже непонятно почему.




Такие дела
Sharpnull:

--- Цитата: ALKOSHA от 24 Август 2019, 00:56:14 ---в хэдере mesh.h пустой массив присвоения цветов почему-то
--- Конец цитаты ---
Вы указывали материал в командной строке? Я скинул версию из tags\linux_gendev_v1\. А там ещё есть branches (такой же файл) и trunk где файл кажется поновее и сам находит mtl, а в этой версии нужно указывать через -m. Из trunk такой код:

--- Код: ---# First parse material files
for filename in file_list:
    material = "%s.mtl" % (os.path.splitext(filename)[0])
    if os.path.isfile(material):
        self.read_materials(material)
    if DEBUG:         
        print "COLORS:", self.colors
--- Конец кода ---
Судя по всему, только этим и отличается и мелочью. Вот снова исправленный скрипт, теперь должны цвета добавляться. Используйте код из trunk.
--------
Примеры (examples) и большинство файлов одинаковые во всех 3 версиях.
--------
В этом скрипте поновее ещё можно указать несколько моделей и они добавятся в один заголовок:

--- Код: ---obj2mesh.py -f dd2.obj -f space_ship2.obj > meshs.h
--- Конец кода ---
ALKOSHA:
Ок. Вечером гляну.
А ещё хотел такой момент уточнить.
Там же все полики описаны трианглами (ведь современные видеокарты ничего кроме трианглов и не знают)
Но ведь для увеличения КПД на сеге можно описать тот же шестиугольник шестью вершинами, а то получается 6 трианглов.
Ну или четырёхугольник состоит из двух трианглов, хотя для сеги это могло быть и одним четырёхугольником. То есть кол-во поликов сократилось бы в несколько раз.
Можно это как-то автоматически переформатировать?
Sharpnull:
ALKOSHA, я не знаю как у MD устроен рендеринг, но в SGDK функция u16 BMP_drawPolygon(const Vect2D_s16 *pts, u16 num, u8 col) принимает любое (?) количество вершин.
Пример из trunk/examples/3d_example как раз должен отображать (я не компилировал) space_ship2.obj полигонами от 3 до 5 вершин. Импортируйте в Blender и увидите.
Так что ваш вопрос к тому, как в Blender объединить треугольники в один полигон? Там есть Face -> Triangulate Faces чтобы превратить в треугольники, Face -> Tris to Quads чтобы треугольники сделать четырёхугольниками, можно удалить рёбра через X -> Dissolve Edges, но получается жуть, потому что вершины не в одной плоскости. Полигоны с 5+ вершинами ещё называются n-gon (ngon). В общем нужно поискать. (вроде этого)
ALKOSHA:
Цвета на поликах появились. Но почему скукоживает в хлам часть сцены (двери окна одно деревцо), я так и не понял. В режиме WireFrame даже ILLEGAL INSTRUCTION выбивает, вертексы уходят далеко за пределы.
Sharpnull:
ALKOSHA, там же FIX16 от -512 до 512 на целую часть и 6 бит на дробь. В коде наверно нет нормализации, стоит попробовать увеличить сцену через 3D-редактор или уменьшить. Также попробовать сохранить всё в треугольниках без многоугольников.
ALKOSHA:
Для теста набросал.
Всё ок.
https://sun9-37.userapi.com/c858216/v858216914/51750/VGmBhe47WyA.jpg
Добавлено позже:
модельку-то набросать могу.
А вот FPS-камера и коллизии...  :hang:
worm:

--- Цитата: ALKOSHA от 24 Август 2019, 22:15:12 ---набросал
--- Конец цитаты ---
Классная ракета)
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии