|
Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр |
25.06.2011, 10:35
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Проекция 3D
Я никак не могу догнать как сделать математическую проекцию 3D на экран (openGL помине нет).
Вот для примера дайте код(желательно на С) для отрисовки примитивного куба(хотя б только вертиклы с триангалами),причем более-менее быстрый-качественный...(макс разрешение 480*272).
(можно примерный полный код с отрисовкой сразу в буфер)
|
(Offline)
|
|
25.06.2011, 14:27
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проекция 3D
Копай irrlicht, в нем софтверный рендер есть.
|
(Offline)
|
|
25.06.2011, 14:34
|
#3
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Проекция 3D
|
(Offline)
|
|
25.06.2011, 14:41
|
#4
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
Копай irrlicht, в нем софтверный рендер есть.
|
не могу,так как платформа портативная,а есть ли в нем 3д сопроцессор-ХЗ,в доках вроде есть(хз как квак и дум портировали....)
|
(Offline)
|
|
25.06.2011, 15:00
|
#5
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо RegIon за это полезное сообщение:
|
|
25.06.2011, 15:10
|
#6
|
ПроЭктировщик
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.06.2011, 15:20
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проекция 3D
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.06.2011, 15:55
|
#8
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
ок.. YellowAfterlife-и тебе спс.(тока косяк ОГРОМНЫЙ,не знаю как в буфер точку поставить,а то через dawrect вериДОЛГО)
|
(Offline)
|
|
25.06.2011, 15:56
|
#9
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Проекция 3D
так как платформа портативная,а есть ли в нем 3д сопроцессор-ХЗ,
|
о_0 чего
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
26.06.2011, 06:07
|
#10
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
просто забыл как называется,gpu хз есть-нет,вроде есть,но какой-то линейный рендр
|
(Offline)
|
|
26.06.2011, 07:35
|
#11
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
позырил ирлич-так-тот гуд,но он в ОС нуждается в длл'ке,а у меня процессор ARM на архе ceva...ни о каких либах речи и не может быть
|
(Offline)
|
|
26.06.2011, 10:11
|
#12
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Проекция 3D
Сообщение от Костян
позырил ирлич-так-тот гуд,но он в ОС нуждается в длл'ке,а у меня процессор ARM на архе ceva...ни о каких либах речи и не может быть
|
Чего? Ирлич? В ОС нуждается? Процессор ARM на архе ceva? Опять люфт?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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 за это полезное сообщение:
|
|
26.06.2011, 10:19
|
#13
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
Чего? Ирлич? В ОС нуждается? Процессор ARM на архе ceva? Опять люфт?
|
irrlicht. В Операционной системе чтоб программы работали сбилденые им нужна длл irrlicht.dll..Да,arm на севе(spmp8000 серии) ~300мгц,32мб озу(макс 128,хочу напаять 64)
|
(Offline)
|
|
26.06.2011, 14:54
|
#14
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Ответ: Проекция 3D
LetCool N350JP? Или какой-нибудь дефендер? Они тоже вроде клоны ЛетКула шлепали.
|
(Offline)
|
|
27.06.2011, 15:46
|
#15
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Проекция 3D
LetCool N350JP? Или какой-нибудь дефендер? Они тоже вроде клоны ЛетКула шлепали.
|
нет,ни один. JXD1000-этот,железо почти одинаковое,но у этого экран 480*272 и он сам побольше
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:08.
|