busted parrot
parent
previous
next
hokum.neocities.org neverparrot--hokum.repl.co neverparrot.nekoweb.org
hokum.neocities.org   neverparrot--hokum.repl.co   neverparrot.nekoweb.org
Как нарисовать попугая.
How to draw a parrot.
Порисуйте кружочки
Draw some circles
Дорисуйте остального попугая. Я не собирался в миллионный раз повторять уроки Блендера. Моя цель выделить использование Blobby которое больше нигде не найти. Примеры BJS и escad раньше можно было найти только зарывшись в исходники.
Draw the rest of the parrot. I wasn't going to repeat Blender tutorials for the millionth time. My goal was to highlight the usage of Blobby that you can't look up anywhere else. Previously you would have to dig through sources to find any examples of BJS and escad.
redCollaredLorikeet.bjs :


imp lori
loriBase
lori

keepSingleLayer lori Collection3

redCollaredLorikeet.escad :

 1 
 2 union ( r = 0) {
 3   
 4   ${loriU}
 5   ${loriWingU2}
 6   ${loriWingU2.opposite}
 7   ${loriTailU}
 8   
 9   union ( r = 0) {
10           ${loriRightLegU}
11     }
12   
13   union ( r = 0) {
14           ${loriRightLegU.opposite}
15     }
16   
17 }
18 

Скрипт BJS посылает группу "lori" в скрипт escad с целью получить неявную поверхность "lori" в форме гномика попугая. Основным объектом, несущим в себе дополнительные свойства, является "loriBase".
The BJS script sends "lori" group to the escad script to receive an implicit surface in the shape of don't google this meme a parrot. The base object "loriBase" carries custom properties.

loriBase["mesh_quality_full"]=0.001; loriBase["rounding"]=0; loriBase["toOpenSCAD"]=true; loriBase["type"]="Sphere";

Свойства "toOpenSCAD" и "type" обязательны для всех объектов в группе на посыл в openscad/extopenscad, остальные учитываются только у основного объекта. Свойство "rounding" устарело, и в большинстве случаев должно быть 0, его функцию теперь выполняют свойства в escad. Свойство "mesh_quality_full" передаётся в опцию -r extopenscad. Помимо "Sphere" свойство "type" может принимать "Cylinder", "Cone" и "Cube". Обратите внимание что нулевая точка (пространства координат объекта) конуса и цилиндра в Блендере и openscad/extopenscad не совпадают по умолчанию. В openscad/extopenscad она находится в центре основания цилиндра или конуса, выставьте их в Блендере вручную.
Properties "toOpenSCAD" and "type" are mandatory for all objects in a group that is to be sent to openscad/extopenscad. The rest are only used for base objects. The "rounding" property is deprecated and in most cases should be 0, use rounding properties in escad instead. The "mesh_quality_full" property is inserted into -r option of extopenscad. Instead of "Sphere" the "type" property could be "Cylinder", "Cone" or "Cube". Do notice that origin points of a cone or a cylinder in openscad/extopenscad missmatch the default origin points in Blender. Correct this in Blender by manualy setting the origin points to the center of a base of a cone or a cylinder.
Члены вида ${} в escad-е являются именами подгрупп группы использованной в BJS. В примере "loriU", "loriWingU2", "loriWingU2.opposite", и так далее, являются подгруппами "lori". Можно отметить, что члены оканчивающиеся на .opposite получены из соответствующих членов без такого окончания при помощи функции makeOppositeSide(...) из apply_custom_options.py или её вариантов.
The ${} entries of an escad are the names of the subgroups of the group used by a BJS. For example "loriU", "loriWingU2", "loriWingU2.opposite" and so on are the subgroups of "lori". It's also worth noting that members ending with .opposite are derived from the corresponding members without such ending by applying the function makeOppositeSide(...) or one of its variants imported from apply_custom_options.py.
Команда keepSingleLayer происходит из времён, когда в Блендере ещё были слои. Команда помещает объект на указанный слой, и убирает его с остальных слоёв. В современном блендере эта команда работает с коллекциями.
The "keepSingleLayer" command originates from the times when Blender had layers. It puts the object onto the given layer and removes it from all the other layers. In modern Blender this command works with collections.
За прошедшие годы я поднимал несколько зеркал этого сайта с целью повышения доступности и отказоустойчивости. Вы имеете возможность оценить степень актуальности зеркал по состоянию табличек.
Over the years I have spawned several mirrors of this site to improve accessibility and fault-tolerance. The level of upkeep of the signs corresponds to that of the mirrors.
neverparrot.gramsk.ru