Как сделать простой турнтэйбл вьювер для моделек на Unity3d

4 апреля 2012, автор: Андрей Клецков (111) - http://andklv.narod.ru


1 - качаем юнити3д - http://unity3d.com/unity/download/

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

2 - устанавливаем, без комментариев.

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

4 - создаём новый проект - file > new project, обзываете как хотите

5 - из своего пакета экспортируете модельку в fbx и кладёте в папку своего новосозданного проекта, fbx родной для юнити формат, но оно умеет само конвертить неродные форматы, достаточно их просто положить в папку проекта. в моём случае это C:\Users\ak\Documents\simple_turntable_viewer\Assets

6 - вытаскиваем модельку в сцену - могут быть приколы с масштабами, материалы скорее всего придётся настраивать отдельно, если они не совсем простые. Настраиваем освещение, теоретически лампочки могут в FBXе приехать готовые, не проверял. Как настраивать материалы - отдельная тема, в принципе ничего сложного, всё стандартное, документация в сети имеется. Лампочки создаются через GameObject > Create other > point light и там другие есть типы лампочек. В Inspector находятся проперти которые можно рулить.

с fbx может приехать анимация, в моём случае это выражалось в том что абизяна через какое-то время после запуска пропадала. лечится тут

7 - осталось повесить на камеру управление - это делается скриптом. можно самому на джаваскрипте написать, а можно в сети найти готовое, в примерах можно много наковырять. Эти ассеты наклыдываются ка ккомпоненты на объекты, то есть особой путаницы нет.

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

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

var target : Transform;
var distance = 5.0;
var xSpeed = 200.0;
var ySpeed = 200.0;

private var x = 0.0;
private var y = 0.0;

@script AddComponentMenu("Camera-Control/Mouse Orbit")

function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}

function LateUpdate () {
if (target) {
if (Input.GetMouseButton(0)) {
x += Input.GetAxis("Mouse X") * xSpeed * distance* 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
}

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

тестовый запуск "не отходя от кассы" вот эта кнопка

api reference тут - http://unity3d.com/support/documentation/ScriptReference

8 - компиляция проекта под веб или под стандалон - File > Build settings...

17 мегабайт получается

и вот так это чудо выглядит

В общем может быть есть смысл и c BGE (blender game engine) позаморачиваться, тот точно под линуксом работает и для браузера у него тоже есть плагинчик:)

А вообще у юнити огромные возможности, на ней игрушки делают.

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

Hosted by uCoz