Sidebar

Новые компиляторы уровней для Xash3D

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 Дядя Миша: сферы? Ну стандартной штукой block creation tool, которая браши делает.
Суть-то в том, что в мапе всё записано правильно, только там же записаны плоскости через три точки. И при восстановлении геометрии из этих плоскостей результат получается какашечный. Значит везде алгоритм этого восстановления одинаковый, и он так себе.
Подозреваю, что нормально восстановить геометрию из плоскостей невозможно, и формат map глупый изначально.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
В формате map мне единственное что непонятно - на кой хранить плоскости в виде трёх вертексов, а не в виде, собственно плоскости. Эти три вертекса никогда не используются компилятором, они мгновенно превращаются в плоскость и не сохраняются. Единственное разумное объяснение этому - все старые компиляторы хранили эти координаты в целочисленных значениях, а плоскость, хоть убейся но не запишешь целым числом. А в целых числах плоскости держали для того, чтобы уменьшить вклад ошибок округления, но оно себя не оправдало.
 

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 Дядя Миша: даже если хранить плоскость иначе, всё равно нельзя однозначно восстановить геометрию, недостаточно данных.
Ведь оба эти варианта являются решением задачи.
attachment.php
 

crystallize

Active member
Jun 6, 2014
1,474
20
36
Дядя Миша said:
В формате map мне единственное что непонятно - на кой хранить плоскости в виде трёх вертексов, а не в виде, собственно плоскости. Эти три вертекса никогда не используются компилятором, они мгновенно превращаются в плоскость и не сохраняются. Единственное разумное объяснение этому - все старые компиляторы хранили эти координаты в целочисленных значениях, а плоскость, хоть убейся но не запишешь целым числом. А в целых числах плоскости держали для того, чтобы уменьшить вклад ошибок округления, но оно себя не оправдало.
Ты же говорил что это всё для удобства разбиения.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Ты же говорил что это всё для удобства разбиения.
Давай точную цитату, а я тебе объясню где ты понял меня неправильно.

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

[ADDED=Дядя Миша]1507228627[/ADDED]
Впрочем мне пришла в голову одна забавная идея, попытаюсь её изложить, но сперва приведу аналогию. Порядок следования полей в энтите свапается ровно столько раз, сколько компиляторов поработало над картой. Это происходит по банальной причине - односвязный список реверсирует порядок всякий раз в момент составления. Таким образом к твоему шарику применяется именно обратный порядок отсечения. Двусвзяный список лишён этой проблемы и в рамках эксперимента можно посмотреть что из этого получится.
 
Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Можно написать простейший брут-форс, который будет рандомно менять порядок плоскостей, до тех пор, пока в полигоне не получится 4 точки, вместо пяти, но скорее всего, это просто замедлит компиляцию, практически не дав положительных результатов.
Даже если придумать какой-то хитрый алгоритм минимизации вершин в браше, вовсе не факт, что результат будет соответствовать тому, что маппер сделал в редакторе.

[ADDED=ncuxonaT]1507228972[/ADDED]
это сильно зависит от порядка следования плоскостей в браше
По уму нужно обрабатывать все плоскости браша одновременно, а не по порядку отсекать.

[ADDED=ncuxonaT]1507229119[/ADDED]
Единственный вариант получить то же, что в редакторе, - это отказаться от map и компилировать из rmf/jmf, что там еще есть.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Нет, результат никоим образом не зависит от порядка следования плоскостей.
Зато мои компиляторы выдают варнинг типа point off plane. Удаляешь калечный шарик - перестаёт ругацца. Так что всё же дело в конечной точности флоата\дабла.

[ADDED=Дядя Миша]1507231209[/ADDED]
Единственный вариант получить то же, что в редакторе
Ну чтоже, компиляторы ксерокса умеют из RMF компилить. Пробуй.
И мней дай, я тожы попробую.

По уму нужно обрабатывать все плоскости браша одновременно, а не по порядку отсекать.
Каждая плоскость отсекается каждой (кроме самой себя естественно). В противном бы случае на картах был полный рандом. Я просто предположил, что в некоторых исключительных случаях возможны варианты.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Добыть здесь.
Впрочем я уже проверил и убедился - не помогло. Да говорю же, точности не хватает. Большая-то сфера без проблем компилицца.
 

GNU/Hurt

Maïté
Mar 5, 2014
1,094
23
0
2 Дядя Миша:
Джек округляет до третьего знака.

>Большая-то сфера без проблем компилицца.
Микрофэйсов и щелей которые издалека не видны не появлялось?
 
Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 Дядя Миша: как ты вообще что-то скомпилировал ими? rmf у меня не компилируется, потому что не находит вады, map компилируется, но не запускается, потому что у какой-то плоскости нормаль неправильная.
Какие могут быть ошибки в точности, если все вершины сферы имеют целочисленные координаты?
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
rmf у меня не компилируется, потому что не находит вады
Ну значит так компилишь.
Какие могут быть ошибки в точности, если все вершины сферы имеют целочисленные координаты?
Нормаль у плоскостей сферы тоже будет иметь целочисленные значения? Дистанция? Писал-писал, не, опять недошло.

[ADDED=Дядя Миша]1507234480[/ADDED]
Джек округляет до третьего знака.
Вот! А надо до пятого.

Микрофэйсов и щелей которые издалека не видны не появлялось?
Сам бы попробовал?
 
Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Скомпилировал, всё равно Mod_LoadPlanes: bad normal for plane #238
Вообще я не думаю, что ксероксовский компилятор берёт координаты вершин, записанные в рмф. Вероятнее, он точно так же перевод сначала всё в плоскости и ищет их пересечения.
 

GNU/Hurt

Maïté
Mar 5, 2014
1,094
23
0
2 Дядя Миша:
Новые ещё не пробовал, чуть позже всё. На вулкановских оно было помню.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
2 ncuxonaT: хех, bad normal for plane. У меня на твоей карте вон вообще виз вылетает на 50% без ошибки. Даже в однопоточном режиме. А с нормалью ничего не сделаешь.
 

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 Дядя Миша: а ведь карта простая как 3 копейки. Могут быть все эти беды из-за кривого разбиения сфер?
 

crystallize

Active member
Jun 6, 2014
1,474
20
36
Если в Джеке поставить галочку "Не привязывать точки примитивов к целочисленной сетке" то сфера перестаёт калечиться при булевых операциях.
 

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord