Амбасадорки
February 15, 2023

Гайд по створенню ARENA-моделі з використанням програмного коду для Createra!

Автор - Crypto Madness (@breezy4L)💙

Рис.1

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

Ви скажете, що в певній мірі полегшувати процес життя навпаки потрібно і навіть дуже... І я з радістю з вами буду згоден, але тільки в тому випадку, якщо у вашій життєвій валізі є достатньо досвіду, знань і навичок в тому чи іншому ділі.

Мова йде про те, що тільки на цьому етапі, пройшовши детальні курси: Створення VOXA-моделі | Створення ARENA-моделі, нам доречно переходити до автоматизації нашого моделювання, до полегшення редагування і загалом роботи із розділом "Create".

Отож, сьогодні ми відправимось у загадковий ліс, наповнений смаком запашних квітів, сповнений яскравістю зелені та зігрітий масивами дерев.

1.1. Переходимо сайт Createra і відповідно гайду по ARENA створюємо порожню карту.

Рис.2

1.2. У розділі "Models" знаходимо: Grass, Tree i Flower і розташовуємо їх на карті (виконується для зберігання моделей в буфер вашого проекту). Після цього користуємось ↩️ і очищуємо карту.

Рис.3
Мої вітання друже, ти за крок до того, щоб відчути всю велич кодування в Createra! 🥳

2.1. У головному меню (зліва) натискаємо на Map і потрапляємо в поле Scripts, яке й існує для написання скриптів (все що захочете) для нашої карти.

Рис.4


Тестова частина кодування

2.2. Створюємо сутність моделі в сцені, використовуючи Mesh File (сітка, яка відповідає за розташування моделей в буфері проекту).

const meshScale = 1/16 //Встановити коеф. масштабування моделі на 1/16 (за замовчуванням)
world.createEntity({
    mesh:'mesh/Grass-2.vb',//назва сітки(моделі)
    collides:false,//на модель впливає колізія чи ні
    fixed:true,//позиція моделі фіксована чи ні
    gravity:false,//на модель діє гравітація чи ні
    meshScale:[meshScale,meshScale,meshScale],//масштабний коефіцієнт по осі X/Y/Z
    position:[63,10,63],
})

2.3. Описуємо функцію для створення кількох сутностей моделі за допомогою різних файлів сітки.

function spawn(x,y,z,meshName){
  const meshScale = 1/16 //Set the model's scaling factor to 1/16 (default)
  return world.createEntity({
    mesh:meshName,//назва сітки(моделі)
    collides:false,//на модель впливає колізія чи ні
    fixed:true,//позиція моделі фіксована чи ні
    gravity:false,//на модель діє гравітація чи ні
    meshScale:[meshScale,meshScale,meshScale],//масштабний коефіцієнт по осі X/Y/Z
    position:[x,y,z],
  })
}
spawn(63,10,63,'mesh/Grass-2.vb') //розмістить 1 екземпляр Grass за координатами (x-63,y-10,z-63)
spawn(63,10,65,'mesh/Flower.vb') //аналогічно тільки з Flower
spawn(63,10,67,'mesh/Tree-3.vb') //аналогічно тільки з Tree

2.4. Створюємо 3 цикла (for) для випадкового розташування наших моделей, а саме: Grass, Flower i Tree.

for(var i=0;i<800;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/Grass-2.vb',1)
}

for(var i=0;i<50;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/Flower.vb',1)
}

for(var i=0;i<100;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/Tree-3.vb',3+3*Math.random())
}
Не повіриш, але ти засвоїв основу для подальшого кодування в Createra, так тримати! 💣

Готова частина кодування

2.5. Вносимо зміни щодо розташування моделі Tree на координаті-Y (пов'язано з тим, що моделі різної висоти, тому виникають деякі нюанси).

function spawn(x,y,z,meshName,scale){
  const meshScale = scale/16 
  const entity = world.createEntity({
    mesh:meshName,
    collides:false,
    fixed:true,
    gravity:false,
    meshScale:[meshScale,meshScale,meshScale],
    position:[x,y,z],
  })
  correctY(entity)
  return entity
}

for(var i=0;i<800;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/Grass-2.vb',1)
}

for(var i=0;i<50;i++){
  spawn(Math.random()*127,9,Math.random()*127,'mesh/Flower.vb',1)
}

for(var i=0;i<100;i++){
  let tree = spawn(Math.random()*127,9,Math.random()*127,'mesh/Tree-3.vb',3+3*Math.random())
  tree.collides = true
}

async function correctY(entity){
  await sleep(1) 
  entity.position.y += entity.bounds.y
}

Момент "ІКС", адже саме зараз ми згенеруємо наш власний мета-ліс із загадковими моделями природи в Createra! 🔥

3.1. Повертаємось до пункту 2.1, копіюємо код із пункту 2.5 і натискаємо на Run (стрілочка в правому верхньому куті).

Рис.5

3.2. Згортаємо середовище розробки повторним натисканням на Map і отримуємо довгоочікуваний результат.

Рис.6


3.3. Додаємо ефектів за бажанням у розділі Scene. На прикладі було використано ефект Snow з текстурою сніжинок.

Рис.7

3.4. Зберігаємо проект (ви вже знайомі з цим з попередніх гайдів).

3.5. Ділимось скріншотами та посиланнями своєї роботи в соціальних мережах (найзручніше Twitter), згадуючи @Createra_ & @jon_wagbi та #Createra #CreateraStudentAmbassadorProgram !


🥳 Кінець статті, але продовження великого внеску для Createra! І хто сказав би, що за такий короткий проміжок часу ми б навчились такого скілу моделювання.

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

• Website: https://createra.fun
• Twitter: https://twitter.com/CreatEra_
• YouTube: https://www.youtube.com/@CreateraOfficial
• Medium: https://medium.com/@Createra
• Discord: https://discord.gg/9VgYKAwQra
• Telegram: https://t.me/+WdwUKFCWD9YwNmQ9

#CreateraStudentAmbassadorProgram #Createra @jon_wagbi @Createra_


🔥 Дякую за увагу!)

⚪️ Підготував — Telegram | Twitter | CEO