Вопросы про формат .bin

Автор nemyax, 24 апреля 2013 18:25:52

« назад - далее »

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

Chuzhoi

Цитата: nemyax от 22 августа 2013 08:50:14
Ты можешь закидывать туда готовые.
Да приспособимся уж как-нибудь. Хотя опыт подсказывает, что экспорт-импорт между двумя 3d-программами не менее геморный, чем экспорт в игру.

Цитата: nemyax от 22 августа 2013 12:22:51
Неа, запись нормалей не помогла. Всё равно fullbright:
http://pix.academ.org/img/2013/08/22/2255941d0bb2b05a950be988009c6e79.png
Я вижу, что была серая, а стала белая. В клеточку. Наложил в качестве текстуры развертку? И что у твоей головы с ушами?

nemyax

Йиихаа!
Это не лайты подвели, это я дебил не везде поубирал заглушки.
Светит как надо:


Ещё немножко посверлю напильником, и вечером обубликую.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

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

nemyax

Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

Все ясно. Кубик неправильный.

nemyax

Цитата: Chuzhoi от 22 августа 2013 15:47:33
Все ясно. Кубик неправильный.
А какой должен быть?
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

LongShad

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

Chuzhoi

Вот такой:


LongShad
Расскажи, как ты вручную пересчитываешь нормали. Очень интересно.

nemyax

Ок, ещё раз:
Формат .bin не содержит информации об острых рёбрах. Имеющихся данных (нормали вершин и нормали фейсов) недостаточно для обозначения таких рёбер.
Чё мона сделать, чтобы поверхность стала прерывистой: найти цепочки рёбер, помеченных как острые, и вспороть сетку вдоль них. У этого трюка есть одно слабое место: цепочки из одного ребра.
Если таковые попадаются, вот так запросто вспороть нельзя — это означало бы существование двух рёбер с одними и теми же вершинами. В блендере, например, такое не валидно (я не говорю невозможно, всего лишь не валидно). Это можно обойти, разделив подобное ребро дополнительной вершиной, получив через это цепочку из двух рёбер и распоров её.
Я могу это реализовать, только пока этим не занимался.
И не путайте меня, пожалуйста. Почему это вдруг мой кастомный кубик неправильный, если штатный кубик шейдится точно так же?
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

nemyax

Chuzhoi
Дай, пожалуйста, бинку твоего кубика. Я её импортну.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

Цитата: nemyax от 22 августа 2013 18:37:22
Почему это вдруг мой кастомный кубик неправильный, если штатный кубик шейдится точно так же?
Все так и есть. Мир Thief населен неправильными кубиками. А я хотел получить возможность делать правильные.

Цитата: nemyax от 22 августа 2013 18:38:41
Chuzhoi
Дай, пожалуйста, бинку твоего кубика. Я её импортну.
http://hedonism.nm.ru/other/box.bin

nemyax

Цитата: Chuzhoi от 22 августа 2013 19:01:03
http://hedonism.nm.ru/other/box.bin
Кубик сплошной, непорезанный =\
Любопытненько, надо поизучать.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

nemyax

Цитата: nemyax от 22 августа 2013 18:37:22
Формат .bin не содержит информации об острых рёбрах. Имеющихся данных (нормали вершин и нормали фейсов) недостаточно для обозначения таких рёбер.
По ходу дела беру свои слова обратно. Любой фейс в .bin-файле содержит массив индексов light-ов. То есть векторы, на которые ссылается каждый угол фейса, могут быть абсолютно любыми (а не только усреднёнными нормалями вершин). По логике вещей это и есть искомые пофейсовые нормали вершин, и их достаточно, чтобы гнуть шейдинг как душа пожелает.
Я попробую поддержать данную фичу, но это будет не сразу.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

Спасибо.

Для справки: данный кубик получен заданием параметра -M(косинус угла) для bsp.exe. По умолчанию этот косинус равен -0.5 (120 градусов). Я же его установил в 0.5 (60 градусов). Так что в bsp (но не meshbld) имеется такое вот частичное решение проблемы.

Я, правда, тут немного поразмыслил и пришел к выводу, что эту фичу в обязательном порядке нужно делать отключаемой. И, более того, по умолчанию она должна быть выключена, а конвертер должен работать точно так же, как и bsp (т. е. то есть осуществлять автосглаживание с углом 120 градусов).

Причина? В мире неправильных кубиков правильные следует вводить с особой осторожностью.

Приведу реальный пример: один автор миссии попросил меня разломить одну стандартную модель пополам. При этом части модели, естественно, визуально не должны были отличаться от целой модели, к которой все привыкли. Поэтому я применил стандартный косинус. И это не единственный случай, когда я так поступил. Хотя обычно сначала стараюсь применять нестандартный (после чего внимательно разглядываю, как полученная модель выглядит в Thief).

nemyax

Цитата: Chuzhoi от 23 августа 2013 00:35:48
Я, правда, тут немного поразмыслил и пришел к выводу, что эту фичу в обязательном порядке нужно делать отключаемой.
Если фича выгорит, то она будет активироваться при двух условиях:

  • Для явным образом помеченных рёбер (команда Mark Sharp).
  • Для всех таких рёбер объекта, об которые фейсы образуют угол, превышающий значение Smooth Angle, если включена опция Auto Smooth.
Насчёт 120 градусов подумаю (в блендере верхний предел автосглаживания — 80). Можно и галку в экспортёр добавить, в конце концов. Кстати, почему вы в мире неправильных кубиков не пользуетесь элементарным бевелом? Красота же получается. Гораздо клёвче, чем правильные. И ньюдарк уже не боится пары лишних полигонов.


И да, предлагаю перенести обсуждение фич в новую тему.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!