Jump to content
Korean Random
SkepticalFox

space.bin (CompiledSpace) - packer/unpacker

Recommended Posts

BWSG все еще нужно разобрать?

Чем больше мы знаем тем лучше. Надо все секции разбирать.

Share this post


Link to post

Short link
Share on other sites

А мы уже ангарчики готовим)))

Без питона))) Чистый space.bin

post-16296-0-67200800-1505006018_thumb.jpg

Частицы тоже грузятся

post-16296-0-93798900-1505008460_thumb.jpg

Конфигурируется это все через chunk-подобный xml-файл.

post-16296-0-09935000-1505009485_thumb.png

Edited by SkepticalFox
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

:O

молодец! я так понимаю, ты написал скрипт, который переводит json-формат в .xml-чанк?

Как насчет того, чтобы не вручную править чанки, а в BigWorld WorldEditor (или как там его?)

Share this post


Link to post

Short link
Share on other sites

я так понимаю, ты написал скрипт, который переводит json-формат в .xml-чанк?

Наоборот)

.xml-чанк руками создается, а потом преобразуется в json, а потом в space.bin

Как насчет того, чтобы не вручную править чанки, а в BigWorld WorldEditor (или как там его?)

Ну там есть некоторая несовместимость с таким подходом...

В общем можно создать там chunk'и, а потом руками перемещать нужные секции, подстраивая их под новый формат.

Вот к примеру секция audio

Было в 0.9.10:

  <audio>
    <visibilityMask>	4294967295	</visibilityMask>
    <transform>
      <row0>	1.000000 0.000000 0.000000	</row0>
      <row1>	0.000000 1.000000 0.000000	</row1>
      <row2>	0.000000 0.000000 1.000000	</row2>
      <row3>	-12.8326 0.11699 -30.2484	</row3>
    </transform>
    <eventName>	hangar_v2_chain	</eventName>
    <maxDistance>	80.000000	</maxDistance>
  </audio>
А сейчас:

  <audio>
    <position>-12.8326 0.11699 -30.2484</position>
    <eventName>hangar_v2_chain</eventName>
    <maxDistance>80.000000</maxDistance>
  </audio>
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Ну там есть некоторая несовместимость с таким подходом...

В общем можно создать там chunk'и, а потом руками перемещать нужные секции, подстраивая их под новый формат.

Вот к примеру секция audio

Было в 0.9.10:

  <audio>
    <visibilityMask>	4294967295	</visibilityMask>
    <transform>
      <row0>	1.000000 0.000000 0.000000	</row0>
      <row1>	0.000000 1.000000 0.000000	</row1>
      <row2>	0.000000 0.000000 1.000000	</row2>
      <row3>	-12.8326 0.11699 -30.2484	</row3>
    </transform>
    <eventName>	hangar_v2_chain	</eventName>
    <maxDistance>	80.000000	</maxDistance>
  </audio>
А сейчас:

  <audio>
    <position>-12.8326 0.11699 -30.2484</position>
    <eventName>hangar_v2_chain</eventName>
    <maxDistance>80.000000</maxDistance>
  </audio>

 

это тоже автоматизируемо.

import xml.etree.ElementTree as minidom
tree = minidom.parse('chunk.xml')
dom = tree.getroot()
pos=[]
for node1 in dom.findall('audio'):
    for node2 in node1.findall('position'):
        pos=list(map(float, node2.text.split(' ')
        node1.remove(node2)
    visMask=minidom.SubElement(node1,'visibilityMask')
    visMask.text='4294967295'
    transform_node=minidom.SubElement(node1,'transform')
    row0=minidom.SubElement(transform_node,'row0')
    row0.text='1.000000 0.000000 0.000000'
    row1=minidom.SubElement(node1,'row1')
    row1.text='0.000000 1.000000 0.000000'
    row2=minidom.SubElement(node1,'row2')
​    row2.text='0.000000 0.000000 1.000000'
    row3=minidom.SubElement(node1,'row3')
    row3.text='%s %s %s'%(pos[0],pos[1],pos[2])
tree.write('chunk_edited.xml')
Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

это тоже автоматизируемо.

А кто спорит?

Это вообще не главное...

Создать совместимость это последняя задача сейчас.

Edited by SkepticalFox
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

забудь о BWSG)

уже можно дампить примитивы? или это не самая важная секция?

 

 

Сейчас самое главное BSMO и BSMI

ок. 

Share this post


Link to post

Short link
Share on other sites

уже можно дампить примитивы? или это не самая важная секция?

Можно напрямую загружать примитивы из файлов, а не из space.bin Edited by SkepticalFox
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

post-16296-0-15536400-1505057478_thumb.jpg

Модельки вроде грузит, осталось над стабильностью поработать.

Работы там еще оочень много.

 

Инстанцирование работает, материалы починил, вроде дошли до предварительного тестирования.

post-16296-0-95465600-1505075115_thumb.jpg

post-16296-0-80965400-1505075478_thumb.jpg

Edited by SkepticalFox
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Прошло почти 2 года)


В общем вот:

 

Код там отвратителен, но писал я его всего одну ночь) Можете тестировать.

 

Краткая инструкция:

Открыть spaces/my_hangar/hangar.chunk и наполнять его

при желании папку my_hangar можно переименовать и прописать новое название в spaces/current.xml

При запуске клиента WoT будет создан space.bin файл с данными из hangar.chunk и уже с ним откроется ангар.

Edited by SkepticalFox
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

Обновление

 

Удалил террейн, очистил hangar.chunk и добавил перезагрузку ангара по F10(настраивается в current.xml).

Edited by SkepticalFox
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

SkepticalFox, снимаю перед вами шляпу :)

 

Всё заявленное работает на отлично!

 

post-37841-0-96667900-1505160484_thumb.jpg

post-37841-0-36871300-1505160516_thumb.jpg

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Правленый avatar_input_handler.xml на включение свободной камеры в ангаре (CapsLk + F3).

Может кому-нибудь пригодится)

attachicon.giffreecamera_hangar_wot0920.zip

 

Для превью-роликов самое то :) Аригато!

 

 

post-37841-0-29894100-1505201588_thumb.jpg

Edited by Tesh2016
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Из него мы должны получить:

-1   Scene Root
 1   lod0
 1   house1
 3   rotate_bone
 1   rotate_bone_BlendBone
Это странный код... Для чего он?

Я напишу завтра утром скрипт

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...