LDraw () — вільне програмне забезпечення і відкритий стандарт формату файлів для комп'ютерної 3D-графіки, розроблений для створення бібліотеки блоків та віртуальних моделей Lego.

Історія У 1995, австралійський програміст Джеймс Джессіман () започаткував розробку безплатної програми під назвою L-CAD, яка мала лише інтерфейс командного рядка. Програма мала власний відкритий текстовий формат опису 3D моделей кубиків Lego, і була призначена для створення віртуальних моделей Lego. Формат отримав назву «LDraw» і швидко набув популярності серед програмістів та фанатів Lego.

25 липня 1997, у віці 26 років Джессіман, через ускладнення від захворювання на грип, помер.

LDraw.org З 2002, розробкою формату і бібліотеки блоків LDraw займається некомерційна організація LDraw.org, яка комунікує з офіційними представниками технічного відділу компанії Lego Group, а торговельна марка LDraw™ належить спадкоємцям Джессімана, з якими комунікують члени Наглядової ради LDraw (, скорочено: LSB).

До розробки стандарту та створення бібліотеки блоків і наповнення репозиторію моделей залучена онлайн спільнота користувачів LDraw, учасником якої на волонтерських засадах може стати будь-який користувач мережі Інтернет.

Адміністратор сайту LDraw.org не одноразово був доповідачеми на щорічній конференції BrickCon.

James Jessiman Memorial Award Починаючи з 2001, щорічно символічною Меморіальною премією імені Джеймса Джессімана відзначають учасників, які зробили значний вклад у розвиток проєкту LDraw.org, а лауреатів визначають члени наглядової ради проєкту () після консультації з батьками Джеймса. Після 2005, премію стала повністю інтернет-премією, яку вручають лише віртуально повідомленням на вебсайті проекту.

Лауреати

Опис формату

Формат LDraw описує 3D модель як набір геометричних примітивів полігональної сітки ("p", у вигляді трикутників, прямокутників, багатокутників, тощо) з яких складається геометрична форма 3D моделі блоку ("part"). Для створення примітивів і блоків використовують спеціалізовані редактори полігональної сітки. З кількох блоків ("part") складають 3D модель віртуальної моделі ("model"). Для створення віртуальних моделей використовують спеціалізовані програми (наприклад, LeoCAD) для збирання віртуальних моделей з бібліотек блоків LDraw — цей процес є аналогічним збиранню моделей Lego з кубиків Lego.

Файли формату LDraw є простими текстовими файлами у кодуванні UTF-8 (без BOM), у яких кожен рядок визначає властивість примітива, блоку чи 3D моделі.

LDraw формат дозволяє зберігати будь-які типи 3D моделей і є універсальним.

Розширення 3 основних типів файлів стандарту LDraw:

DAT (.dat) — файли блоків, субблоків та стікерів, а також файли геометричних примітивів, з яких складають їх 3D-моделі; LDR (.ldr) — віртуальна модель Lego, що складається з 1 чи більше блоків; MPD (.mpd, ) — файл моделі, зібраної з кількох файлів .ldr, а також може слугувати контейнером для файлів блоків моделі, і таким чином модель може бути повністю незалежною від зовнішніх бібліотек блоків. Файли з розширеннями .ldr і .mpd ідентичні за синтаксисом із файлами .dat.

LDraw дозволяє розділяти модель на кроки, і таким чином структурувати модель, що своєю чергою дозволяє зберігати інструкція зі збирання моделі зберігається безпосередньо у файлі моделі, а також дозволяє створювати кроки з обертанням камери і навіть переміщенням блоків у сцені простим методом. Формат також дозволяє вкладати одну модель в іншу, таким чином створювати більші збірні моделі, що полегшує роботу над складними моделями. Це також робить формат компактним: замість визначення полігонів для кожного окремого шипа конкретного блоку, у файл блоку вставляється посилання на файл блоку з шипом, який може бути використаний таким чином багаторазово, з додатковою трансформацією положення за необхідності у кожному окремому блоці, незалежно один від одного.

Блоки, моделі, субмоделі, та полігони є незалежними від моделей Lego (лише бібліотека блоків пов'язана з моделями Lego, бо вона описує конкретні кубики Lego).

Опис блоку Кожен файл блоку у форматі DAT починається з кількох (від 3 і більше) стандартних рядків що місять назву блоку, назву поточного файлу, ім'я автора, назву ліцензії згідно умов якої створено блок, а також перелік категорій, ключових слів, тощо.

Система одиниць

LDU (LDraw Unit) — базова одиниця довжини у системі одиниць стандарту LDraw, дорівнює кроку шипів (тобто, відстан між центрами двох сусідніх шипів), наближено дорівнює 0.4 мм. +Порівняльна таблиця одиниць виміру1 = LDUммLUFlatPStudBrickinКоментарLDU0.4LDraw Unit — базова одиницямм2міліметр = 0.1 см = 0.01 дм = 0.001 мLU41.6Lego Unit = 1 p («plastic») — товщина стінки кубикаFlat83.22висота пластинки («plate») без шипа — відстань між краями двох сусідніх шипів (не діагонально)P208.0521крок шипів («pin step») — відстань між центрами двох сусідніх шипів (не діагонально)Stud208.0521ширина кубика (справжнього: P-0.2 мм = 7.8 мм)Brick249.66311висота кубика (без висоти шипа)in6425.4168333 (дюйм) = ft (фут) = yd (ярд)Примітки: розміри в in і мм наближені (у мм — з округленнями до першого десяткового знаку) Деякі редактори (наприклад, LeoCAD) відображають розміри і координати положення блоків лише в одиницях LDU. Для перетворення реальних розмірів об'єктів у одиниці LDU, користувачами LDraw було створено кілька допоміжних блоків у форматі LDraw у вигляді лінійок з різними одиницями вимірів, які можна використовувати безпосередньо у редакторах LDraw під час візуальногювання, зокрема під час моделювання масштабних моделей.

Масштаб Масштаб для масштабних моделей (відповідно мініфігурок LEGO): 1:42 (наближено 1:42 або 1:43).

Також як основний використовують й інші від 1:32 до 1:48.

Текстури LDraw формат дозволяє вбудовувати файли растрових зображень (як текстур) безпосередньо у файли LDraw з використанням кодування base64. Наприклад, фрагмент коду файла LDraw з вбудованим зображенням Прапора України розміром 48x32 пікселі виглядатиме так:

, де Flag_UA.png — ім'я файла, у тому вигляді, як воно виглядало на момент вбудовування файла зображення у файл LDRaw, і це ім'я використовується як посилання на відповідну текстуру. Це ім'я може бути в подальшому змінене.

Приклади файлів

3003.dat (блок кубика 2x2)

0 Brick 2 x 2 0 Name: 3003.dat 0 Author: James Jessiman 0 !LDRAW_ORG Part UPDATE 2002-03 0 !LICENSE Redistributable under CCAL version 2.0 : see CAreadme.txt

0 BFC CERTIFY CCW

0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 0 !HISTORY 2002-05-07 [unknown] BFC Certification 0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement 0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01

1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat

0 BFC INVERTNEXT 1 16 0 24 0 16 0 0 0 -20 0 0 0 16 box5.dat

4 16 20 24 20 16 24 16 -16 24 16 -20 24 20 4 16 -20 24 20 -16 24 16 -16 24 -16 -20 24 -20 4 16 -20 24 -20 -16 24 -16 16 24 -16 20 24 -20 4 16 20 24 -20 16 24 -16 16 24 16 20 24 20

1 16 0 24 0 20 0 0 0 -24 0 0 0 20 box5.dat

1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat 1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.datКод приведений вище визначає 3D модель блоку стандартного кубика 2x2 (Lego ID: 3003). Він складається з п'ятисторонньої коробки (box5.dat, орієнтація назовні) і інвертованої п'ятисторонньої коробки (орієнтація всередину), з'єднання країв цих двох коробок, що складається з 4 прямокутників (4 ліній кромок, лінії починаються з команди 4), 4 шипів зверху (stud.dat) і довгого гнізда знизу (stud4.dat).

Усі лінії у LDraw розпочинаються з Command Number, де 0 означає No Command (з часом, деякі лінії що розпочинаються з 0 і спеціальних слів у верхньому регістрі було прийнято у стандарт як Meta Commands).

Команда 1 вкладає субфайл — визначає шлях до файлу і матрицю трансформації яка має бути застосована до вкладеного файлу, а також колір (color, де значення 16 означає "використовуати колір який був визначений при вкладенні у поточний файл").

Команда 4 визначає прямокутний полігон. Також є команди які визначають пласкі лінії (2D). Такі лінії дають чітке відображення блоку навіть за відсутності ефекту тінювання поверхні при ортографічному рендерингу.

pyramid.ldr (модель піраміди) Нижче приведено код моделі піраміди, створеної з блоків стандартних кубиків 2x4 (Lego ID: 3001) зі зміною кольору, та з блоком кубика 2x2 зверху піраміди (останній крок).

0 Example Pyramid for Demonstration of LDRAW Library 0 Name: pyramid.ldr 0 Author: James Jessiman

1 1 -40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat 1 1 40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 -40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat 1 1 -60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat

0 STEP

1 4 -20 -48 40 1 0 0 0 1 0 0 0 1 3001.dat 1 4 40 -48 20 0 0 1 0 1 0 -1 0 0 3001.dat 1 4 20 -48 -40 1 0 0 0 1 0 0 0 1 3001.dat 1 4 -40 -48 -20 0 0 1 0 1 0 -1 0 0 3001.dat

0 STEP

1 14 0 -72 20 1 0 0 0 1 0 0 0 1 3001.dat 1 14 0 -72 -20 1 0 0 0 1 0 0 0 1 3001.dat

0 STEP

1 0 0 -96 0 1 0 0 0 1 0 0 0 1 3003.dat

0 STEP

Бібліотеки блоків Серед готових до використання блоків у форматі LDraw є кілька бібліотек блоків у вигляді деталей з наборів конструкторів різних виробників.

Офіційні блоки Спільнота авторів блоків LDraw.org дозволяє долучення до офіційної бібліотеки блоків лише блоків на основі існуючих офіційних кубиків Lego, і ця умова прописана у візії проекту (але схема нумерації файлів блоків частково відмінна від нумерації використовуваної сайтом BrickLink):

Станом на 2024, офіційна бібліотека блоків LDraw.org вже містить переважну більшість кубиків з усіх існуючих офіційних наборів , зокрема з таких серій як:

Classic — серія Lego наборів раннього випуску з базовими кубиками; Animals, Dino — серії Lego з кубиками у формі різних тварин і динозаврів. Bionicle — серія Lego наборів з кубиками для складання фігурок біонічних роботів (деталі мають складну криволінійну форму і спеціальні шарнірні з'єднання та є обмежено суміснісими з кубиками інших серій); Creator, Icons, Model Team — серія Lego з кубиками спеціальної форми у вигляді частин різних транспортних засобів (літаків, автомобілів, тощо); DUPLO — серія Lego з кубиками збільшеного розміру, призначена для дітей молодшого віку; Minifig (мініфігурки Lego) — збірні моделі людей, тварин та художніх персонажів, а також моделі аксесуарів для них (одяг, посуд, тощо). MODULEX — серія Lego з кубиками зменшеного розміру, призначена для архітектурного проєктування; Technic, MINDSTORMS, Education, Powered Up — серії Lego для робототехнічного та електротехнічного моделізму; Town, City, Friends — серія Lego для урбаністичного моделізму в масштабі мініфігурок Lego (деталі мають форму елементів конструкцій будинків, меблів, транспорту); Trains — серія Lego для залізничного моделізму з деталями у вигляді елементів конструкції залізниць (колій, перемикачів) та залізничного транспорту (локомотивів, вагонів). Офіційна бібліотека постійно доповнються блоками раніше відсутніх моделей кубиків Lego та моделями нових кубиків Lego. Для відслідковування існючих кубиків використовують спеціалізовані сайти, які займаються каталогізацією кубиків з наборів Lego (Rebrickable, BrickOwl, Peeron, BrickArchitect), у тому числі й офіційні каталогізатори Lego Replacement Pieces та BrickLink Inventories Reference.

Процес створення нового блоку у форматі LDraw називається .

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

Кожен користувач може долучитися до створення все ще відсутніх блоків, за умов дотримання вимог описаних у візії проекту та правилах і вимогах до авторів блоків.