Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Математика

Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр

Ответ
 
Опции темы
Старый 25.06.2011, 10:35   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Смех Проекция 3D

Я никак не могу догнать как сделать математическую проекцию 3D на экран (openGL помине нет).
Вот для примера дайте код(желательно на С) для отрисовки примитивного куба(хотя б только вертиклы с триангалами),причем более-менее быстрый-качественный...(макс разрешение 480*272).
(можно примерный полный код с отрисовкой сразу в буфер)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 25.06.2011, 14:27   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проекция 3D

Копай irrlicht, в нем софтверный рендер есть.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 25.06.2011, 14:34   #3
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Проекция 3D

http://www.codeguru.com/cpp/misc/mis...cle.php/c10123
(Offline)
 
Ответить с цитированием
Старый 25.06.2011, 14:41   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

Копай irrlicht, в нем софтверный рендер есть.
не могу,так как платформа портативная,а есть ли в нем 3д сопроцессор-ХЗ,в доках вроде есть(хз как квак и дум портировали....)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 25.06.2011, 15:00   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

http://pmg.org.ru/basic3d/math.htm --разжеванно
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо RegIon за это полезное сообщение:
Reizel (26.06.2011), YellowAfterlife (25.06.2011)
Старый 25.06.2011, 15:10   #6
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Проекция 3D

Преобразование 3d координат точки в 2d координаты на экране.
Пример на п̶с̶е̶в̶д̶о̶к̶о̶д̶е GameMaker:

Функция задания проэкции (вызывать при смене позиции камеры):
/* argument[] - массив переданных в функцию параметров
P.S.: практически все переменные из этой функции должны быть глобальными */
/*
0..2 координаты источника камеры (откуда смотрит)
3..5 координаты цели камеры (куда смотрит)
6..8 вектор "нормали" камеры (можно просто поставить 0,0,1)
*/
/*
    p3d_set_projection(
    0   xFrom
    1   yFrom
    2   zFrom
    3   xTo
    4   yTo
    5   zTo
    6   xUp
    7   yUp
    8   zUp
    9   arc = 60
    A   view = 0
    )
*/
_sx = argument[0]
_sy = argument[1]
_sz = argument[2]
_sw = view_wview[argument[10]] /* ширина экрана */
_sh = view_hview[argument[10]] /* высота экрана */
_sa = _sw / _sh
// delta:
_dx = argument[3] - _sx
_dy = argument[4] - _sy
_dz = argument[5] - _sz
// delta vector length:
_dl = sqrt(_dx * _dx + _dy * _dy + _dz * _dz)
// divide by length to get 1-long vector:
_dx /= _dl
_dy /= _dl
_dz /= _dl
// xyzUp:
_nx = argument[6]
_ny = argument[7]
_nz = argument[8]
//
_nn = _dx * _nx + _dy * _ny + _dz * _nz
// subtract from xyzUp:
_nx -= _dx * _nn
_ny -= _dy * _nn
_nz -= _dz * _nn
// xyzUp length:
_nl = sqrt(_nx * _nx + _ny * _ny + _nz * _nz)
_am = tan(argument[9] * pi / 360)
//
_nx *= _am / _nl
_ny *= _am / _nl
_nz *= _am / _nl
//
_vx = (_dz * _ny - _dy * _nz) * _sa
_vy = (_dx * _nz - _dz * _nx) * _sa
_vz = (_dy * _nx - _dx * _ny) * _sa

Преобразование координат:
/* px, py - глобальные переменные. можно заменить на возврат структуры Point {x, y }*/
/*
    p3d_vertex(offset, x, y, z)
*/
var tx, ty, tz, tl, tt, ti;
ti = argument[0]
tx = argument[1] - _sx
ty = argument[2] - _sy
tz = argument[3] - _sz
tl = tx * _dx + ty * _dy + tz * _dz
//
tx /= tl
ty /= tl
tz /= tl
//
tt = (tx * _vx + ty * _vy + tz * _vz) / sqr(_sa * tan(pi / 8))
px[ti] = (tt + 1) * _sw / 2
tt = (tx * _nx + ty * _ny + tz * _nz) / sqr(tan(pi / 8))
py[ti] = (1 - tt) * _sh / 2

Для рисования, используем вторую функцию для занесения преобразованных координат точки в массив, и потом рисуем это как-либо:
p3d_vertex(0, 0, 0, 0)
p3d_vertex(1, 256, 0, 0)
p3d_vertex(3, 0, 256, 0)
p3d_vertex(2, 256, 256, 0)
for (i = 0; i < 4; i += 1)
draw_line(px[i], py[i], px[(i + 1) mod 4], py[(i + 1) mod 4])


Отредактировано: кажется, я зря писал это сообщение и добавлял комментарии в код.
(по крайней мере я пытался помочь)
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (25.06.2011)
Старый 25.06.2011, 15:20   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проекция 3D

http://en.wikipedia.org/wiki/Software_rendering смотреть ссылки
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (25.06.2011)
Старый 25.06.2011, 15:55   #8
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

ок..YellowAfterlife-и тебе спс.(тока косяк ОГРОМНЫЙ,не знаю как в буфер точку поставить,а то через dawrect вериДОЛГО)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 25.06.2011, 15:56   #9
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Проекция 3D

так как платформа портативная,а есть ли в нем 3д сопроцессор-ХЗ,
о_0 чего
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
NitE (25.06.2011), Randomize (26.06.2011)
Старый 26.06.2011, 06:07   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

о_0 чего
просто забыл как называется,gpu хз есть-нет,вроде есть,но какой-то линейный рендр
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 26.06.2011, 07:35   #11
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

позырил ирлич-так-тот гуд,но он в ОС нуждается в длл'ке,а у меня процессор ARM на архе ceva...ни о каких либах речи и не может быть
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 26.06.2011, 10:11   #12
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Проекция 3D

Сообщение от Костян Посмотреть сообщение
позырил ирлич-так-тот гуд,но он в ОС нуждается в длл'ке,а у меня процессор ARM на архе ceva...ни о каких либах речи и не может быть
Чего? Ирлич? В ОС нуждается? Процессор ARM на архе ceva? Опять люфт?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Android (26.06.2011), Mr_F_ (26.06.2011), NitE (26.06.2011)
Старый 26.06.2011, 10:19   #13
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

Чего? Ирлич? В ОС нуждается? Процессор ARM на архе ceva? Опять люфт?
irrlicht. В Операционной системе чтоб программы работали сбилденые им нужна длл irrlicht.dll..Да,arm на севе(spmp8000 серии) ~300мгц,32мб озу(макс 128,хочу напаять 64)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 26.06.2011, 14:54   #14
Android
Бывалый
 
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений
(для 448 пользователей)
Ответ: Проекция 3D

spmp8000
LetCool N350JP? Или какой-нибудь дефендер? Они тоже вроде клоны ЛетКула шлепали.
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 15:46   #15
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Проекция 3D

LetCool N350JP? Или какой-нибудь дефендер? Они тоже вроде клоны ЛетКула шлепали.
нет,ни один. JXD1000-этот,железо почти одинаковое,но у этого экран 480*272 и он сам побольше
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com