forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_m3g - Ну полный 3D (http://forum.boolean.name/showthread.php?t=7891)

odd 26.02.2009 08:04

Lib_m3g - Ну полный 3D
 
Вложений: 2
Библиотека для просмотра анимированных 3D сцен.
Команды (пока) очень простые:

Код:

load(fname: string; n: integer) - Загрузка модели
    fname - имя файла, содержащего M3G модель
    n - ID номер трансформации модели
   
paint - Отрисовать модель на экране (не отобразится на экране пока
    не будет вызвана перерисовка)

repaint - Перерисовка модели

animate(ms: integer) - Анимация модели
    ms - время в миллисекундах, можно получить например
    при помощи функции GetRelativeTimeMs

Так что теперь можно смело рисовать свои 3D модели в 3D Max или аналогичных редакторах и просматривать всё это на мобиле. А я пока буду ломать голову над тем как развернуть объект/камеру, приблизить/удалить и проч. проблемы. К сожалению, наблюдается полное отсутствие наличия хоть какой-то более-менее вменяемой литературы на эту тему.

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

PS: В качестве эмулятора для тестинга рекомендую KEmulator. В нём есть такой инструмент как M3G view.
PPS: Короче, тема хорошая хоть и довольно объёмная. Возможно буду писать нормальную 3D библиотеку с полным перечнем возможностей.

m1kc. 27.02.2009 18:01

Ответ: Lib_m3g - Ну полный 3D
 
Вложений: 1
А можешь сделать еще и Mascot Capsule?
Вот документация, там все расписано более чем подробно, правда, на английском.

aNNiMON 27.02.2009 19:09

Ответ: Lib_m3g - Ну полный 3D
 
Я могу по Mascot Capsule сделать. Я уже не раз с ними работал.

odd 28.02.2009 08:35

Ответ: Lib_m3g - Ну полный 3D
 
Я щас пишу более объёмную версию либы по M3G. Как закончу, можно и за mascot приниматься или кто-то другой может создаст её пока я занимаюсь этой.

ЯМАКc 02.03.2009 15:26

Ответ: Lib_m3g - Ну полный 3D
 
А можно 3д либу написать?
или хотябы использовать m3g и модифицировать?

odd 03.03.2009 02:20

Ответ: Lib_m3g - Ну полный 3D
 
Вложений: 2
Библиотека в стадии написания. Пока есть такие функции (уже побольше):

PHP код:

SetMulti(iinteger) - Установить условный множитель для библиотеки.
    
Дело в томчто MP не умеет передавать в библиотеку вещественные числапоэтому их приходится передавать
    как целые
но умноженные на определенный множительК примеру0.23 передаётся как 230.
    По умолчанию множитель равен 1000.
    Функции
использующие множительSetPerspectiveCameraCamera_OrientLight.
    
SetWindow(xintegeryintegerwintegerhinteger) - Установить окнов котором будет выводиться
    наша трёхмерная графика
    
SetPerspective
(p1integerp2integerp3integer) - Установить параметры перспективы 3D графики
    По умолчанию
параметры приняты такие700.150
    Лучше без надобности их не менять
но кому надо пожалуйста
    
Animate
(msinteger) - Анимация трёхмерной M3G модели.
    
ms время в миллисекундах (можно брать функцией GetRelativeTimeMs)
    
Camera(xintegeryintegerzinteger) - Начальная установка (инициализациякамеры для просмотра 3D сцены
    x
yкоординаты камеры
    
Camera_Orient
(aintegerbintegercintegerdinteger) - Ориентация камеры
    a
bcкакие-то параметрыСам пока не разобрался что они делают.
    
Light(xintegeryintegerzinteger) - Установить свет
    x
yкоординаты источника света
    
Paint 
Нарисовать сцену (ничего не увидите пока не сделаете Repaint)

Repaint Перерисовка сцены

Background
(fnamestring) - Загрузка фона для нашего мираИмеется ввиду небо.
    
fname имя файла из ресурсов с текстурой неба
    
Floor
(fnamestringiinteger) - Загрузка текстуры для земли.
    
fname имя файла из ресурсов с текстурой земли
    i 
параметр масштабирования текстуры

ВНИМАНИЕ! Чтоб всё работало, надо ещё добавлять в проект файл Floor.class

Хотелось бы ещё загружать в мир свои M3G модели и как-то перемещать их.
Но пока что это не получается сделать. Может у кого-то больше опыта в данной области? Может, поможете?
Введение 3D графики -- это просто открывает новую эру в программировании на MP.

ЯМАКc 03.03.2009 22:58

Ответ: Lib_m3g - Ну полный 3D
 
пример не работает. Появляется белый фон и синий низ, синий слой направляется вверх до половины экрана и удаляется вниз. Приложение выходит.

odd 05.03.2009 01:52

Ответ: Lib_m3g - Ну полный 3D
 
У меня нормально пашет, да там и смотреть толком пока не на что. Ещё работать и работать.

ASMjavaC 08.03.2009 13:10

Ответ: Lib_m3g - Ну полный 3D
 
Camera_Orient(a: integer; b: integer; c: integer; d: integer) - Ориентация камеры
a, b, c, d - какие-то параметры. Сам пока не разобрался что они делают.

ты сам делаешь библиотеку? исходником не поделетесь.. вращение заинтересовало.
я не понял Light(x: integer; y: integer; z: integer) изменяю параметры и нечего.. да и в примере 4! параметра а не 3

ASMjavaC 08.03.2009 13:16

Ответ: Lib_m3g - Ну полный 3D
 
каму инетесно вот перемещение клавиатурой
Код:

Program M3G_demo;
Uses d3;
Var i, k, m, lr, l1, l2, l3, l4: integer;
Begin       
        SetWindow(0, 0, GetWidth, GetHeight); // Устанавливаем окно
        Background('/clouds.gif'); // Загрузка текстурки для облаков
        Floor('/grass.gif', 6); // Текстурка земли
        Camera(0, 500, 2000); Camera_Orient(-100, 1000, 0, 0); // начальные установки камеры
        l1:=-45000;
        l2:=1000;
        Light(l1, l2, l3, l4); // Установка света
        i:=500; k:=-10; m:=4000;
        repeat
        if getKeyPressed = KE_KEY9      then i:=i-10; //вниз 9
        if getKeyPressed = KE_KEY3      then i:=i+10; //вверх 3
        if getKeyPressed = KE_KEY2      then m:=m-10; // вперед
        if getKeyPressed = KE_KEY8        then m:=m+10; // назад
          if getKeyPressed = KE_KEY4          then lr:=lr-10; // лево
          if getKeyPressed = KE_KEY6          then lr:=lr+10; //дправо


    Camera(lr, i, m); //i := i + k; m := m - 25; // Просто тупо двигаем камеру
                //if (i = 70) or (i = 500) then k := -k;
                if m = -4000 then break; // Если дошли до края земли - выход
                d3.Paint; d3.Repaint; Delay(50); // Открисовка сцены
        until false;
End.


ASMjavaC 08.03.2009 13:29

Ответ: Lib_m3g - Ну полный 3D
 
Цитата:

Сообщение от ЯМАКc (Сообщение 99495)
пример не работает. Появляется белый фон и синий низ, синий слой направляется вверх до половины экрана и удаляется вниз. Приложение выходит.

у меня такаяже фича..
лечится так:
конвертируем все (2) gif файла в png и незабываем заменить ресурсы в МП и поменять в коде "ссылки" на них.

ПС лично у меня gif не поддерживает на NOKIA5300

ViNT 08.03.2009 13:38

Ответ: Lib_m3g - Ну полный 3D
 
Хм, чтож это за телефоны, если поддерживают m3g, но не поддерживают широко распространенный в сети формат gif.

Dj_Alex 08.03.2009 23:31

Ответ: Lib_m3g - Ну полный 3D
 
для полного счастья не хватает движение, вращение, масштабирование моделей.

odd 10.03.2009 01:57

Ответ: Lib_m3g - Ну полный 3D
 
Цитата:

Сообщение от Dj_Alex (Сообщение 100009)
для полного счастья не хватает движение, вращение, масштабирование моделей.

Да сам знаю, что не хватает, но пока работаем в этом направлении. Скоро будет.

@llien 11.03.2009 10:21

Ответ: Lib_m3g - Ну полный 3D
 
Цитата:

Сообщение от ASMjavaC (Сообщение 99952)
у меня такаяже фича..
лечится так:
конвертируем все (2) gif файла в png и незабываем заменить ресурсы в МП и поменять в коде "ссылки" на них.

ПС лично у меня gif не поддерживает на NOKIA5300

Неправда!!!!
у мя на нокухе 5300 (моя как уже 3 года изучена вдоль и поперек) все гифки работают на ура!


Часовой пояс GMT +4, время: 19:41.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot