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

Totoro Cookies

  • записей
    9
  • комментариев
    136
  • просмотров
    114 049

3D-Принтер

Totoro

29 794 просмотра

blog-0009590001427914451.png

Трехмерная печать в Minecraft

(инструкции для самых маленьких)

Начиная с версии 1.5.4, в OpenComputers появляется интересный девайс - трехмерный принтер. Он дает возможность печатать декоративные блоки любой формы и цвета. Причем не только статичные блоки, но и двери/люки, кнопки и рычаги!

Давайте рассмотрим, для чего он может пригодиться, и как именно с ним работать.

 

2015-04-01_18.07.13.png

 

1. Цель

Как и в предыдущих гайдах, первым делом поставим себе цель.

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

 

Я не буду приводить в этом гайде рецепты предметов, так как их легко найти в NEI, или в статьях на gamepedia.

 

2. Обзор принтера

3D-принтер - это периферическое устройство, которое должно быть подключено к работающему компьютеру. Оно представляет собой блок, с двумя внутренними слотами:

 

3DPrinter.png

 

Верхний слот предназначен для специальной печатной массы (изготовляется из редстоуна, гравия, древесного угля и воды). Принтер вмещает два стека печатной массы (256 000 ед).

Нижний слот занимает картридж с красителями. Объем внутреннего хранилища - два картриджа краски (100 000 ед).

 

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

На модель из этого гайда, состоящую из 21 фигуры, принтер потратил 424 единицы массы и 314 единиц краски.

 

3. Отпечатанный блок

Модель для печати задается в виде списка "фигур" - параллелепипедов. Каждая фигура отмечена координатами противоположных углов. Она имеет свою текстуру, цвет оттенка (если необходимо) а также состояние (true/false).

Максимальное количество фигур в модели - 24, по умолчанию.

 

Координаты блока тремя числами (X, Y, Z) в пределах от 0 до 16.

 

text4774.png

 

Блок может переключать свое состояние, когда игрок кликает по нему правой кнопкой мыши, или на блок подается сигнал редстоуна.

По умолчанию блок имеет форму, заданную блоками с состоянием false, и сменяет ее на форму из блоков с состоянием true, при активации.

 

Кроме того блок имеет несколько дополнительных общих флагов, которые определяют его название, описание и некоторые другие параметры.

 

4. Программирование принтера

Есть два способа распечатать свою модель. Через компонент принтера и прямое управление, либо при помощи стардартной программки print3d от Сангара.

 

4.1 Компонент принтера

Подключение принтера ничем не отличается от подключения любого другого устройства:

local com = require('component')local printer = com.printer3d
 

Компонент предоставляет набор функций для управления:

  • reset() - сброс настроек и остановка печати
  • setLabel(value:string) - задаем название будущего блока
  • getLabel():string - получаем текущее название
  • setTooltip(value:string) - задаем описание блока
  • getTooltip():string - получаем описание
  • setRedstoneEmitter(value:boolean) - определяет, излучает ли блок сигнал редстоуна в активированном состоянии
  • isRedstoneEmitter():boolean - возвращает true, если блок излучает сигнал в активном состоянии
  • setButtonMode(value:boolean) - определяем поведение блока при активации. Если true, то блок автоматически возвращается в неактивное состояние через несколько секунд после активации (как кнопка)
  • isButtonMode():boolean - возвращает true, если блок находится в режиме "кнопки"
  • addShape(minX:number, minY:number, minZ:number, maxX:number, maxY:number, maxZ:number, texture:string[, state:boolean=false][,tint:number]) - добавляет новую "фигуру" к форме блока. Фигура задана координатами. texture - название текстуры, state - для какого состояния фигура предназначена, tint - цвет оттенка фигуры
  • getShapeCount():number - возвращает количество фигур в модели
  • getMaxShapeCount():number - возвращает максимально возможное количество фигур
  • commit([count:number]) - посылает принтеру текущую конфигурацию и начинает печать (count - количество копий, если не задано - равно 1)
  • status(): string, number or boolean - возвращает состояние принтера - "buzy" и процент готовности, или "idle" и готовность предмета (true/false).

4.2 Программа print3d

Код программы не включен в мод по умолчанию, поэтому его надо скачать из интернета.

Последнюю версию можно найти на ГитХабе автора: https://github.com/OpenPrograms/Sangar-Programs/blob/master/print3d.lua

Либо скачать с Pastebin: http://pastebin.com/b5rD8KcY

(поставьте интернет-плату, и наберите в консоли компьютера команду pastebin get b5rD8KcY print3d)

 

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

Формат вызова программы:

print3d FILE [count]
 

Где FILE - название файла с моделью, а необязательный параметр count - количество копий модели.

 

Модели имеют простой формат - все параметры записываются в таблицу, по аналогии с Луа. Вот образец файла с моделью.

{  -- Это - название модели. Т.е. название будущего блока, которое будет видно  -- в инвентаре и подсказке Waila. Название по умолчанию - "3D Print"  label = "Example Model",  -- Это описание предмета, такое, как будет видно в инвентаре. Если не задано,  -- предмет не будет иметь описания  tooltip = "Это демонстрационная модель, показывающая все возможности",  emitRedstone = false, --[[ Если этот параметр равен false, блок работает как                             дверь, сменяя свое состояние при сигнале редстоуна.                             Если параметр равен true, блок работает как кнопка                             или рычаг - излучая сигнал при смене состояния.                             При этом блок не реагирует на сторонний сигнал.                             По умолчанию параметр равен false. ]]  buttonMode = false,   --[[ Если этот параметр равен false, модель работает как                              дверь или рычаг - то есть остается в том состоянии,                             в которое установлен игроком.                             Если параметр равен true, модель автоматически возвращается                             в неактивное состояние через несколько секунд после                             активации.                             По умолчанию параметр равен false. ]]  -- Это список фигур модели, которые определяют, как она выглядит.  -- Модель должна содержать как минимум одну фигуру (параллелепипед)  -- в неактивном состоянии.  -- Фигуры не могут быть "плоскими" т.е. не иметь объема.  -- Каждая фигура задана шестью числами: minX, minY, minZ, maxX, maxY, maxZ.  -- (Координаты двух противоположных углов.)  -- Если смотреть спереди, ось X направлена вправо, ось Y - вверх и ось Z - вглубь.  -- Дополнительно, каждая фигура длолжна обладать текстурой. Для того чтобы  -- определить название текстуры, вы можете воспользоваться Определителем Текстуры  -- (Texture Picker), кликнув им по нужному блоку.  --  -- Модель имеет два состояния - неактивное (false, состояние по-умолчанию)  -- и активное (true, состояние после активации блока).  shapes = {    -- Фигура идет от точки <0, 0, 0> (левый нижний угол) до <8, 8, 8> (середина),    -- и имеет текстуру блока лазурита.    { 0, 0, 0, 8, 8, 8, texture = "lapis_block" },    -- Фигура идет из точки <8, 8, 8> (середина) в <16, 16, 16> (правый верхний угол),    -- и закрашена текстурой дубовой листвы. Фигура принадлежит активному состоянию    -- модели и имеет светло-зеленый оттенок.    { 8, 8, 8, 16, 16, 16, texture = "leaves_oak", state = true, tint = 0x48B518 }  }}
 

Т.е. описание модели просто содержит перечень всех тех параметров, которые задаются при помощи компонента, и список фигур из которых модель состоит.

 

2015-04-01_17.59.31.png

 

Набор тестовых моделей для изучения, можно найти здесь: https://github.com/OpenPrograms/Sangar-Programs/tree/master/models

 

5. Проектирование модели

Разобьем мысленно рисунок запланированной модели на параллелепипеды.

Она будет представлять собой тонкую плитку посередине блока, наподобие стекла или решетки.

 

Руководствуясь сеткой координат и образцом выше, составим описание модели для текстового файла:

{ label = "Плитка 'Морда крипера'", emitRedstone = true, buttonMode = false, tooltip = "Секретный рычаг в виде головы крипера" shapes={  {0,14,7, 16,16,9, texture="quartz_block_side", tint=0x8eb200},  {0,2,7,  2,14,9,  texture="quartz_block_side", tint=0x8eb200},  {6,10,7, 10,14,9, texture="quartz_block_side", tint=0x8eb200},  {14,2,7, 16,14,9, texture="quartz_block_side", tint=0x8eb200},  {2,2,7,  4,10,9,  texture="quartz_block_side", tint=0x8eb200},  {4,8,7,  6,10,9,  texture="quartz_block_side", tint=0x8eb200},  {10,8,7, 12,10,9, texture="quartz_block_side", tint=0x8eb200},  {12,2,7, 14,10,9, texture="quartz_block_side", tint=0x8eb200},  {6,2,7,  10,4,9,  texture="quartz_block_side", tint=0x8eb200},  {0,0,7,  16,2,9,  texture="quartz_block_side", tint=0x8eb200},  {0,14,7, 16,16,9, texture="quartz_block_side", tint=0x8eb200, state=true},  {0,2,7,  2,14,9,  texture="quartz_block_side", tint=0x8eb200, state=true},  {6,10,7, 10,14,9, texture="quartz_block_side", tint=0x8eb200, state=true},  {14,2,7, 16,14,9, texture="quartz_block_side", tint=0x8eb200, state=true},  {2,2,7,  4,10,9,  texture="quartz_block_side", tint=0x8eb200, state=true},  {4,8,7,  6,10,9,  texture="quartz_block_side", tint=0x8eb200, state=true},  {10,8,7, 12,10,9, texture="quartz_block_side", tint=0x8eb200, state=true},  {12,2,7, 14,10,9, texture="quartz_block_side", tint=0x8eb200, state=true},  {6,2,7,  10,4,9,  texture="quartz_block_side", tint=0x8eb200, state=true},  {0,0,7,  16,2,9,  texture="quartz_block_side", tint=0x8eb200, state=true},  {2,2,8,  14,14,9, texture="quartz_block_side", tint=0xe0301e, state=true}}}
 

Итак, наша плитка имеет двойной набор фигур - для двух состояний, окрашенных в текстуру кварца с зеленым оттенком.

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

 

Откройте файл командой open creeper.

Скопируйте код плитки выше и вставьте в файл кнопкой [insert].

Затем сохраните ([Ctrl]+) и покиньте редактор ([Ctrl]+[W]).

 

6. Печать

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

Отправляем ее на печать!

print3d creeper
 

7. Итоги

 

2015-04-01_17.35.55.png

 

2015-04-01_18.12.35.png

 

2015-04-01_18.12.36.png

 

Enjoy!

  • Нравится 11
  • Спасибо 2


29 комментариев


Рекомендуемые комментарии



кстати, мне вот интересно, кто эти 5 мудаков, которые дизлайки Ньюби поставили за 3Д опенкомпьютерс кухню?:) 

BpnwA2d.png

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

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


Ссылка на комментарий
13 минуты назад, EFL сказал:

я думал это текстура двери просто, если это они и есть, то это меня воодушевляет)

на счет дверей не уверен, что они 3д-принтерные, может это и какие-то из мода, например malisisdoors или CarpentersBlocks ну или любого мода, где есть может какие-то двойные двери. Но шторы там точно являются 3д принтами.

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


Ссылка на комментарий
1 час назад, EFL сказал:

нашел ответ на свой вопрос под другим его видео, спасибо за помощь :)

да не за что, я то тут при чем, Ньюби поблагодари в комменте под видео:) Удачи в 3д-принтинге, как сделаешь двери эти двойные, выкладывай на наш форум.

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


Ссылка на комментарий

Гость
Добавить комментарий...

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

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

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

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

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

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