Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.11.2010, 06:30
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 1  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
По умолчанию Наложение 3d на 2d

Делаю игру с видом с верху, она полностью двухмерная.
Хочу сделать 3d домики, пробовал просто на 2d картинку наложить 3d и естественно работает не так как надо, домики смещаются из за перспективы во время движения камер(2d и 3d), 2d часть поместить на 3d плоскость не подходить.

Подскажите пожалуйста.
Как сделать так чтоб домики не смещались?

Старый 29.11.2010, 21:34
NikolyA вне форума Посмотреть профиль Отправить личное сообщение для NikolyA Найти все сообщения от NikolyA
  № 2  
Ответить с цитированием
NikolyA
 
Аватар для NikolyA

Регистрация: Dec 2006
Сообщений: 1,764
но ты ж делаешь игру, смотри, отлаживай по коду где криво стало, и исправляй

Старый 29.11.2010, 22:20
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Только скрин поможет разобраться.

Вообще, если у тебя 3d камера смотрит не вертикально вниз, то точного совмещения 2d пола и 3d объектов ты не добьешься. Единственный выход — изометрия.

Если же 3d камера смотрит вертикально вниз, то кинь свою 2d картинку на пол в 3d и подбери такой FOV, чтобы картинки совпали (твоя 2d и копия в 3d). При таком положении смещения обеих камер должны быть синхронизированы; т.е. сдвинуть картинку на 12px влево будет все равно, что 3d камеру на 12px вправо — точное совпадение.

P.S.
Я когда работал с 3d — никогда не делал камере FOV. У меня линии в плоскости с координатой z=0 всегда 1:1 соответствовали просто линиям на 2d экране. Драматические перспективы достигаются нещадным уменьшением дистанции от наблюдателя до экрана. Этого хватало... всегда 0о
__________________
Поймай яблоко 2!

Старый 30.11.2010, 00:13
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 4  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
инициализирую камеру
Код AS3:
var box:Box = new Box();
box.setMaterialToAllFaces(new FillMaterial(0x090909));
c.addChild(camera); //c:ConflictContainer
c.addChild(box);
box.x=400;
box.y=-300;
camera.view=new View(800,600);
camera.z=1500;
camera.rotationX=Math.PI;//поворачиваю камеру вниз, вертикально
//Вьюпорт заАдЧилден в root
Двигаю камеры относительно персонажа
Код AS3:
//x,y координаты 2d плоскости	
if(Hero.X<=Config.mapSizeX-800/2&&Hero.X>=800/2)
{
	x-=int(Hero.X+x-800/2);
	camera.x=Hero.X;
}
if(Hero.Y<=Config.mapSizeY-600/2&&Hero.Y>=600/2)
{
	y-=int(Hero.Y+y-600/2);
	camera.y=Hero.Y*-1;
}
может я что-то делаю не так?
с 3d первый раз работаю.

Старый 30.11.2010, 00:23
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
я ничего не понял, но может это как-то так должно быть?

Код AS3:
//x,y координаты 2d плоскости	
if (Hero.X <= Config.mapSizeX - 800/2 && Hero.X >= 800/2)
{
	x = int(Hero.X - 800/2);
	camera.x = Hero.X;
}
if (Hero.Y <= Config.mapSizeY - 600/2 && Hero.Y >= 600/2)
{
	y = int(Hero.Y - 600/2);
	camera.y= -Hero.Y;
}
P.S.
никогда не работал с альтернативой =)
__________________
Поймай яблоко 2!

Старый 30.11.2010, 01:20
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 6  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
Zebestov
с 2Дкамерой у меня все верно, подобрал методом тыка высоту 3Дкамеры 500, стало нормально, но смущает магическое число.
Спасибо что помогаете.

Добавлено через 40 минут
Нашел окончательное решение
высота камеры должна быть равна фокусному расстоянию.
Код AS3:
camera.z=Math.sqrt(camera.view.width*camera.view.width + camera.view.height*camera.view.height)*0.5/Math.tan(0.5*camera.fov);

Старый 30.11.2010, 02:08
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 7  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
точно. забыл привести это соображение в первом ответе.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.