Перейти к публикации
Форум - ComputerCraft
NEO

Hologram Editor [OpenComputers]

Рекомендованные сообщения

На спавн эти голограммы надо поставить. Заходит игрок и видит аллею произведений искусства! Очень даже поднимет настроение и возможно подтолкнет учиться делать такие штуки

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоторо, не думал про алгоритмы сжатия изображений?

уже придуман.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоторо, не думал про алгоритмы сжатия изображений?

Да, думал. Как NEO сказал, уже слегка пожали изображения. С 73 кБ до 19.

Я возможно добавлю ужатие блоков одинаковых байтов. Это позволит избавиться от орд нулей, которые зополоняют каждый сейв :)

Правда в худшем раскладе размер возрастет. Но надеюсь никому не нужно будет создавать голограмму "губка" с шагом в один воксель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, думал. Как NEO сказал, уже слегка пожали изображения. С 73 кБ до 19.

Это не сжатие, а упаковка

Я возможно добавлю ужатие блоков одинаковых байтов. Это позволит избавиться от орд нулей, которые зополоняют каждый сейв :).

Во! Я об этом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Во! Я об этом

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это не сжатие, а упаковка

Во! Я об этом

алгоритмическое преобразование данных, производимое с целью уменьшения занимаемого ими объёма. Применяется для более рационального использования устройств хранения и передачи данных. Синонимы — упаковка данных, компрессия, сжимающее кодирование, кодирование источника. Обратная процедура называется восстановлением данных (распаковкой, декомпрессией).
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

алгоритмическое преобразование данных, производимое с целью уменьшения занимаемого ими объёма. Применяется для более рационального использования устройств хранения и передачи данных. Синонимы — упаковка данных, компрессия, сжимающее кодирование, кодирование источника. Обратная процедура называется восстановлением данных (распаковкой, декомпрессией).

Да, ты прав. Конечно я выразился не совсем точно. Но, надеюсь, мы с Тоторо поняли друг друга.

На счет "синтаксиса", могу предложить вариант.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Минимальный объем информации, необходимый для кодирования цвета одного вокселя будем называть символом. Очевидно, что символ содержит два бита или число от 0 до 3. Все возможные значения одного символа (0, 1, 2, 3) будем называть алфавитом. Последовательность из нескольких символом будем называть словом. Суть предлагаемого алгоритма сжатия состоит в замене последовательности одинаковых символов XXX...X, словом XN, где X - символ, входящий в исходную последовательность, N- длина этой последовательности, выраженная символами алфавита. Длина последовательности N может принимать значения от 1 (единичный воксель) до 48х48х32=73728 (весь рисунок залит одним цветом). Поскольку длина числа N дешифратору неизвестна, основная проблема это отделить N, входящую в текущую последовательность от начала следующей последовательности. Диапазон изменения N, выраженный в двоичном виде, будет от 1 до 10010000000000000. Каждый бит числа будем кодировать одним символом. Причем, если бит не последний, кодируем его символом "0" или "1", соответственно. В случае если бит завершает слово, кодируем его символом "2", если бит равен 0, или символом "3", если бит равен 1. Поскольку N всегда начинается с бита 1 (незначащие нули не рассматриваем), этот бит при кодировании можно опустить, а при декодировании добавить. Сложность возникает только при кодировании N=1, т.к. в этом случае опускается единственный бит, входящий в N. Для того, чтобы устранить эту проблему, перед кодированием добавим к N единицу, а после декодирования - вычтем.

Пример кодирования: Предположим, нам необходимо закодировать последовательность из 25-ти символов "2".

1) Первый символ, входящий в закодированное слово "2" - символ из которых состоит исходная последовательность.

2) К длине последовательности добавляем единицу 25+1=26 и представляем в двоичном виде 26(10)=11010(2)

3) Отбрасываем первую единицу - 1010

4) Кодируем каждый бит кроме последнего символами "0" или "1". Последний бит кодируем символом "2" (соответствует биту 0) В итоге получаем слово - "21012".

Пять символов вместо 25-ти.

Последовательность декодирования:

1) Принимаем из входного потока первый символ. Из этих символов будет состоять последовательность после декодирования.

2) Присваиваем N=1

3) Сдвигаем N влево на 1

4) Принимаем из входного потока очередной символ.

5) Если принятый символ 1 или 3, N= N+1

6) Если принятый символ 0 или 1, возвращаемся к пункту 3

7) N= N-1

8) Декодированная последовательность представляет собой последовательность из N символов, принятых в п. 1 Предложенный алгоритм сжимает последовательности длиной не менее 3. Последовательности из двух символов не сжимает. А единичные символы замещает словом из двух символов. В наилучшем случае рисунок будет сжат в 4336 раз. В наихудшем - размер увеличится вдвое.

Изменено пользователем Zer0Galaxy
  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость NC_Bob

:fp:Правильно было бы сказать "Зачем на компьютерном сервере лаготрубы из термалки и ключ, снимающий кнопки в привате, и пчелы" Это то же, как GodusX спросил, - Рид, а зачем на сайте Вики по CC и OC.

 

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

Пчелы всегда и к селу и к городу.

:D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне лень было читать вевсю тему в поисках ответа на вопрос: А в каком формате сохранясохраняются изображения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поскольку я все никак не перепишу сохранение файлов с ужатием (по замечательному посту от Zer0Galaxy) , сохранение в текущей версии имеет такой формат:

<9 байт - три цвета (3*3)><18432 байт - матрица голограммы (48*32*48)>

Матрица хранится в слегка "упакованном" виде. Четыре вокселя в один байт. Записывается построчно, в определенном порядке. Всего выходит 19 кБ веса.

 

Файл имеет расширение *.3d (это уже просто понты от разработчиков :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

[О старой версии - лень было листать страницы, накинулся на то что было]

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

В новой версии наверно много удобней, завтра потестю.

Вопрос мой в том, можно ли "понты от разработчиков формата .3d" открыть БЕЗ эдитора?

тобишь не нарисовать - сохранить - загрузить - "в проэктор",

А нарисовать - сохранить - использовать в других программах/разворачивать на компах БЕЗ эдитора/компах с в-картой ниже 3лвл.

(Тема такая: нарисовал 5 моделек монеты, хочу чтоб эти монеты на проекторе последовательно сменяли друг друга, потом их сделаю больше, будет своего рода "эффект кручения монетки". Задача не так в том чтоб это отобразить, это не сложно. Задача использовать ваши модельки в СВОЕЙ проге! возможно? как?)

З. Ы. НЕО, если так быстро развивать прогу то можно сразу в неё и moitioneditor впилить. Снять мульт, и наслаждатся своим величием. Потом устроить броадкаст музыки и через notenoughcodecs её проиграть как озвучку мульта. Холотеатр, ёмаё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за отзыв. Да, в последней версии удобнее рисовать. Добавлены фронтальная и боковая проекции, "призрачный" слой и еще по мелочи.

 

Последняя версия Hologram Editor 0.60:

http://pastebin.com/MYDU6tiV

 

Для того чтобы развернуть голограмму на любом компе, используй Hologram Viewer:

http://pastebin.com/ezPPXSFE

Это консольная утилита. Работает на любом компьютере, с любым проектором. Синтаксис команды:

show filename[.3d] [scale]
(Расширение 3d писать не обязательно, масштаб - тоже. По дефолту будет 1.0)

 

Оттуда ты можешь взять функции для загрузки (loadHologram) и вывода на проектор (drawHologram).

Не забудь скопировать переменные и константы, которые юзают эти функции и вспомогательные функции get, set и rgb2hex.

 

P.S. В OpenComputers 1.4 советую ставить в комп с редактором алмазный процессор (Tier 3). Работает гораздо быстрее чем железный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот, спасибо,.

Затырю функции, опробую анимацию...

Ежели чего выйдет - гифку/видео предоставлю. Просто перед этим этих монет придется чуть ли не 100500 штук нарисовать, чтоб двигалось плавно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И ещё, я ставлю белый(255,255,255) и в нем вырезаю пустоты серым(192,162,192) в редакторе они отображаются, а на голограмме цвет одинаково белый. Тоже самое с (192,192,255). Это связано с редактором или с голограммой? если с редактором то как исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробовал цвета.

(192,162,192) - это получается бледно лиловый.

(192,192,255) - бледно сиреневый.

Оба цвета рисуются и в редакторе и на проекторе. На проекторе второй цвет слабоотличим от белого на верхних плоскостях голограммы, которые как бы освещены сверху. На боковых хорошо виден.

Первый цвет без проблем отображается.

 

Проверь свой проектор - если он первого уровня (зеленый), то не умеет отображать больше одного цвета.

Тогда программа нарисует всю голограмму первой кисточкой (заменит на нее все другие).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проектор второго уровня.

Я разобрался - голограмма должна быть в несколько слоёв чтоб было видно разницу между серым и белым. Также, (потом выложу скрин) приходится много баловатся с голограммой при игре с шейдерами ибо при seus ultra, белый становится ярко золотым источником света, откоторого может ослепнуть и Стив и ты сам. Скрины завтра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ещё, часто, если допускал ошибки и стирал их ластиком то появляются эти пиксели в виде красных или белых блоков сразу после сохранения(до сохр. Всё норм, всё красиво, нажимаю Сохранить, редактор перезагружает воркспэйс с лишними точками.)Скрины приложу завтра.

З.Ы. Ошибся с цветом. 192.192.192. Серый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проектор второго уровня.

Я разобрался - голограмма должна быть в несколько слоёв чтоб было видно разницу между серым и белым. Также, (потом выложу скрин) приходится много баловатся с голограммой при игре с шейдерами ибо при seus ultra, белый становится ярко золотым источником света, откоторого может ослепнуть и Стив и ты сам. Скрины завтра.

То как голограммы видны при игре с шейдерами, это уже наверное к автору мода.

Это зависит от того, как именно отрисовывает свои голограммы Sangar, и как обрабатывает эти поверхности код шейдера.

 

Ошибок при стирании не должно быть. Жду скрин. В качестве ластика надо использовать именно первую кнопку-"кисть". Я имею ввиду, если заменить другую кисть на черный - это будет черная кисть, но не ластик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И снова разобрался сам. Много баловался с цветами кистей. Похоже если ластик заменить на белый а потом на чёрный опять то он начинает бесится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И снова разобрался сам. Много баловался с цветами кистей. Похоже если ластик заменить на белый а потом на чёрный опять то он начинает бесится.

Да, ластик не предполагалось на что-то заменять. Он по идее всегда располагается на первой кнопке, и просто делает пустоты в голограмме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может для создания самой модели использовать Techne? а раскрашивать в программе можно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может для создания самой модели использовать Techne? а раскрашивать в программе можно

Лучше в воксельном редакторе. Например Slab6 (в котором я моделю некоторые штуки) или VoxelShop.

 

Загвоздка в одной вещи - нужно расковырять бинарный формат этих моделей (сохраненных в файл) и написать конвертер, который перегонит модель в голограмму.

В какой-то своей теме (лень искать :P ) я описывал замысловатый способ сделать это используя мой конвертер из schematic-файлов.

Вкратце:

1) Создаем (или конвертируем из полигональной) воксельную модель.

2) Конвертируем в schematic (в цветную шерсть)

3) Распаковываем

4) Перегоняем с помощью моего конвертера в простой формат для голограммы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите, пожалуйста, синтаксис программы, чтобы можно было устанавливать значение каждого вокселя отдельно в текстовом виде. То есть не через интерпретатор каждый раз писать component.hologram.set(x, y, z, value), а чтобы просто было поле ввода текста, в котором как раз эти x, y, z, value и нужно было бы писать. Через pcall(io.read) не получалось, программа ругалась, что первый аргумент булевый, даже если остальные, кроме этого первого задать изначально. P.S. я не так давно начал изучать Lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите, пожалуйста, синтаксис программы, чтобы можно было устанавливать значение каждого вокселя отдельно в текстовом виде. То есть не через интерпретатор каждый раз писать component.hologram.set(x, y, z, value), а чтобы просто было поле ввода текста, в котором как раз эти x, y, z, value и нужно было бы писать. Через pcall(io.read) не получалось, программа ругалась, что первый аргумент булевый, даже если остальные, кроме этого первого задать изначально. P.S. я не так давно начал изучать Lua

Первый ясно-понятно, что будет булевый. Смотри аргумент 2, там сам вывод io.read.

Потом парси, например, через шаблоны, описанные Zer0Galaxy.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×