Перейти к содержимому
Doob

Голопроектор

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

Размер голограммы 48x32x48 вокселей, при этом ее масштаб можно изменять от 1x1x1 до 9x6x9 реальных блоков.

 

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

local hologram = require('component').hologram

В консоли lua можно сразу =component.hologram.функция

 

И так, с чего начнем?

Самая главная функция у нас будет clear()

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

clear, как понятно из названия - стирает все содержимое, что есть на проекторе.

 

Далее у нас идет set(x, y, z, индекс)

Собственно, это и есть одна из функций вывода.

Чтобы отобразить воксель, задаем в функцию его координаты по x, y и z в виде числовых значений и состояние вокселя.

Состояние вокселя это либо true/false, либо индекс палитры цветов.

Координаты как во всем майнкрафте - x это ширина, y - высота, z - длинна.

 

Для примера сделаем так: hologram.set(1, 1, 1, 1) т. е. создается воксель по координатам x = 1, y = 1, z = 1, с состоянием = 1

Если у нас монохромный монитор, то четвертый аргумент может быть только 1 или 0, в ином случае, можно задать от 0 до 3

 

А если необходимо узнать значение вокселя по определенным координатам, есть функция get(x, y, z)

Она принимает координаты и возвращает состояние указанного вокселя.

 

Теперь разберемся, что это за четвертый аргумент.

У голопроектора I уровня можно задать только один цвет, у голопроектора II уровня - 3

Цвета задаются функцией setPalleteColor(индекс, цвет), в формате 0xRRGGBB, например:

hologram.setPalleteColor(1, 0xFF0000) - теперь под индексом 1 у нас красный цвет

hologram.setPalleteColor(2, 0x00FF00) - под индексом 2 установлен зеленый

hologram.setPalleteColor(3, 0x00FFFF) - под индексом 3 установлен бирюзовый... ну, вроде-бы, понятно.

 

Узнать, под каким индексом, какой цвет можно при помощи функции getPalleteColor(индекс)

Она принимает номер индекса и возвращает его значение.

 

 

Разберем еще один инструмент вывода.

fill(x, z, минимум_y, максимум_y, индекс)

Этой функцией можно рисовать столбы - задаем горизонтальные координаты по x и z, указываем координаты нижнего и верхнего блока и цвет.

Пример:

hologram.fill(1, 1, 1, 10, 1) - создаем столбик высотой в 10 вокселей.

Это может быть полезно, если надо отрисовывать какие-то фигуры с заливкой по вертикали, например, карту рельефа.

 

 

Еще один не совсем удобный инструмент это копирование.

copy(от_x, от_z, до_x, до_z, цель_x, цель_z)

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

Первые два значения это точка отсчета, вторые два - конец, третьи - целевые координаты.

Например:

hologram.copy(1, 1, 10, 10, 10, 1) - скопирует 10x10 вокселей на 10 вокселей по x

 

 

Иногда бывает нужно спрятать проектор за блоками и чтобы голограмма выглядывала сквозь блоки.

Для этого можно использовать setTranslation(x, y, z)

Этой функцией можно сместить всю голограмму на 0.5 собственной величины по горизонтали и на 1 по вертикали.

Т.е. hologram.setTranslation(0, 1, 0) при размере голограммы 0.3 она будет отрисовываться на 1 блок выше, при размере 4 - на 6 блоков.

 

 

Для работы с масштабом голограммы имеется две функции:

setScale(размер) и getScale()

Первая задает масштаб от 1/3 до 4, а вторая возвращает установленное значение.

 

 

В недавнем обновлении, для проекторов II уровня была добавлена возможность вращения голограм.

Функция setRotation(угол, x, y, z) позволяет повернуть голограмму на заданный угол по любой оси.

функция setRotationSpeed(скорость, x, y, z) задает скорость вращения по определенной оси и заставляет голограмму постоянно вращаться, пока есть энергия.

Для примера, сделаем такой набросок:

 

hologram.setTranslation(0, 1, 0) -- поднимаем голограмму повыше
hologram.set(1, 16, 1, 1) -- ставим точку в начале отсчета горизонтальных координат
hologram.set(22, 16, 22, 2) -- ставим точку примерно в центре
hologram.setRotation(45, 23, 0, 0) -- наклоняем голограмму на 45 градусов по оси x
hologram.setRotationSpeed(30, 0, 23, 0) -- задаем вращение со скоростью 30 по оси y
Изменено пользователем Doob

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


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

 

 

hologram.setRotation(45, 23, 0, 0) -- наклоняем голограмму на 45 градусов по оси x hologram.setRotationSpeed(30, 0, 23, 0) -- задаем вращение со скоростью 30 по оси y

 

Впервые узнал об этой штуке, на официальной вики ни слова, пруф ниже. Спасибо, короче)

 

0ec62dd20b900cb497a76e3a9b22570b.png

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


Ссылка на сообщение
Поделиться на других сайтах
В 09.12.2015 в 11:09, Doob сказал:

Разберем еще один инструмент вывода.

fill(x, z, минимум_y, максимум_y, индекс)

По какой-то причине выводится ошибка nil "x"

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...