w23 / OpenSource

Load Source games maps as combined meshes correctly positioned relative to each other
Do What The F*ck You Want To Public License
157 stars 16 forks source link

An idea how to remove skybox #11

Closed Triang3l closed 6 years ago

Triang3l commented 11 years ago

I have an idea how to remove the skybox areas.

First, find the leaf in which info_player_start's "eyes" are placed. Push this leaf to the stack.

Then, until the stack is empty, repeat: 1) Pop leaf from the stack. 2) Mark popped leaf. 3) For each visible leaf of that leaf: 3.1) Check if it's not already marked. Proceed to 3.2 if it's not. 3.2) Push the visible leaf to the stack.

Then, make a mesh containing only polygons from the marked leaves.

What do you think?


У меня есть идея, как убрать скайбоксы.

Сначала, найди тот лист, в котором находятся "глаза" info_player_start'а. Положи его на стек.

Затем, пока стек не стал пустым, выполняй следующие действия: 1) Возьми лист со стека. 2) Отметь его. 3) С каждым видимым листом у этого листа: 3.1) Проверь, не был ли он отмечен ранее. Если нет, переходи к 3.2. 3.2) Положи этот лист на стек.

Потом, сделай меш, содержащий только полигоны из отмеченных листьев.

Как тебе идея?

w23 commented 11 years ago

There are lots of other floating geometries that need wiping out or proper placing, and your idea is close to what I had in mind, but the major problem here is not an algorithm, but my lack of free time. The fact that the core of this thing, BSP.cpp, is a HORRIBLE FUCKING MESS kind of proves that -- I was thinking about cleaning it a little before making this public, but that would take me another eternity.

Anyway, this cleaning is a must before proceeding further and implementing fancy stuff.


Лень повторять :D. В общем, времени у меня нет совсем, и не знаю, когда будет :(. Если есть желание, можешь склонировать и сделать что-нибудь, а я потом запуллю или вообще дам доступ на запись. Но там, конечно, пиздец в BSP.cpp нужно причесать для начала.

w23 commented 6 years ago

Skyboxes were implemented with #25 in https://github.com/w23/OpenSource/commit/2a47e6beb1dc8dbcf29762604799d0cbd340db1f