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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 23.12.2009, 10:35   #1
rr333
Нуждающийся
 
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений
(для 38 пользователей)
Вопрос поворот объекта на объект

Function createquad()
quad=CreateMesh()
surf=CreateSurface(quad)
v1=AddVertex(surf,0,5,0)
v2=AddVertex(surf,0,-5,0)
v3=AddVertex(surf,40,5,0)
v4=AddVertex(surf,40,-5,0)
AddTriangle(surf,v1,v3,v4)
AddTriangle(surf,v1,v4,v2)
RotateMesh quad,90,0,0
EntityColor quad,0,0,0
Return quad
End Function
Function obzor(cam)
If KeyDown(31) Then MoveEntity cam,0,0,-temp
If KeyDown(17) Then MoveEntity cam,0,0,temp
If KeyDown(30) Then MoveEntity cam,-temp,0,0
If KeyDown(32) Then MoveEntity cam,temp,0,0
xm=MouseXSpeed()
ym=MouseYSpeed()
MoveMouse 400,300
TurnEntity cam,ym*mouse,-xm*mouse,0
End Function
Function update(cam,mesh1,mesh2,mesh3)
RotateEntity mesh1,0,-(ATan2(EntityX(cam,1)-EntityX(mesh1,1),EntityZ(cam,1)-EntityZ(mesh1,1)))+90,270,1
RotateEntity mesh2,-(ATan2(EntityY(cam,1)-EntityY(mesh2,1),EntityZ(cam,1)-EntityZ(mesh2,1)))+90,0,0,1
End Function
Graphics3D 800,600,0,0
Global mouse#=.1,temp#=.5
w1=createquad()
PositionEntity w1,-7,0,0
w2=createquad()
PositionEntity w2,0,0,7
cam=CreateCamera()
CameraClsColor cam,255,255,255
PositionEntity cam,0,2,-10
Repeat
obzor cam
update cam,w1,w2,w3
RenderWorld
UpdateWorld
Flip()
Until KeyHit(1)
End
Два прямоугольника поворачиваются к камере вокруг своей локальной оси. А как сделать, чтобы эту ось можно было изменять, т. е. при любом повороте объекта он остался повернут своей полной видимой стороной к камере, и поворачивался по своей локальной, той же оси.
Я что-то не могу понять как это сделать.
(Offline)
 
Ответить с цитированием
Старый 23.12.2009, 11:21   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: поворот объекта на объект

гм... EntityYaw and EntityPitch and EntityRoll тебе в помощь, PointEntity
(Offline)
 
Ответить с цитированием
Старый 23.12.2009, 16:40   #3
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: поворот объекта на объект

Угу, поворачивай свои объекты на углы положения камеры,
находя их через команды предоставленные выше.
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 24.12.2009, 14:49   #4
rr333
Нуждающийся
 
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений
(для 38 пользователей)
Ответ: поворот объекта на объект

Угу, поворачивай свои объекты на углы положения камеры,
Так спрайты делаются,но для моего случая такой способ не подходит
Но я решил проблему:
1)создаю пивот у объекта
2)припаренчиваю камеру к пивоту
3)поворачиваю пивот на угол, отрицательный углам объекта
4)высчитываю угол поворота объекта по формуле (в коде выше, функция-update)
5)возвращаю камеру на место и отпаренчиваю от пивота
6)удаляю пивот
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 11:06   #5
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: поворот объекта на объект

чет метод чрезжопный какой то )))
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 14:49   #6
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: поворот объекта на объект

Может быть стоит использовать функцию HolyDel'a (CurvePointEntity)?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Harter (02.01.2010)
Старый 02.01.2010, 16:12   #7
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: поворот объекта на объект

Вот пока здесь спрошу....

В ообщем, в справке написано, что команда PointEntity(Entity1,Entity2,Angle#) направляет Entity1 на Entity2. Причем, если величина Angle# не указана, поворот осуществляется мгновенно, иначе поворачивает на Angle# за один шаг. Но, как я ни пробовал, выставлял Angle от 1 до .0001, Entity1 всегда направлялось мгновенно! Что же я делаю не так???
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 16:20   #8
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: поворот объекта на объект

entity - entity handle
target - target entity handle
roll# (optional) - roll angle of entity

Description
Points one entity at another.

The optional roll parameter allows you to specify a roll angle as pointing an entity only sets pitch and yaw angles.

If you wish for an entity to point at a certain position rather than another entity, simply create a pivot entity at your desired position, point the entity at this and then free the pivot.
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 16:45   #9
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: поворот объекта на объект

Nite, справка и у меня есть, даже русская И там таккже все написано, а толку от этого Roll# никакого. Так все же знает кто как делать правильно?
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 21:41   #10
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений
(для 2,520 пользователей)
Ответ: поворот объекта на объект

Если я правильно понял, тебе нужно это:

Function SmoothPointEntity(e1,e2,smothness#=100.0,smeshen#=0)
	PositionEntity gPivot1,EntityX(e1),EntityY(e1)+smeshen,EntityZ(e1)
	PointEntity gPivot1,e2	
	RotateEntity e1, 0,curveAngle#(EntityYaw(gPivot1),EntityYaw(e1),smothness#),0	
End Function

Function CurveAngle#(newangle#,oldangle#,increments#)
	If increments>1		
		If (oldangle+360)-newangle<newangle-oldangle 
			oldangle=360+oldangle
		End If
		If (newangle+360)-oldangle<oldangle-newangle 
			newangle=360+newangle
		End If
		oldangle=oldangle-(oldangle-newangle)/increments
	End If
	If increments<=1 
		Return newangle
	End If
	Return oldangle

End Function
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 22:16   #11
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: поворот объекта на объект

Harter, если бы мне нужен был код, я бы его сам написал, но, мне было интересно умеет ли PiontEntity работать как мне надо
ЗЫ EntityYaw() никогда не возвратит значение >360 и <0, => в функции CurveAngle() можно проверку отключить...
(Offline)
 
Ответить с цитированием
Старый 02.01.2010, 22:39   #12
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: поворот объекта на объект

Вот пока здесь спрошу....

В ообщем, в справке написано, что команда PointEntity(Entity1,Entity2,Angle#) направляет Entity1 на Entity2. Причем, если величина Angle# не указана, поворот осуществляется мгновенно, иначе поворачивает на Angle# за один шаг. Но, как я ни пробовал, выставлял Angle от 1 до .0001, Entity1 всегда направлялось мгновенно! Что же я делаю не так???
это бред.
Nite, справка и у меня есть, даже русская И там таккже все написано, а толку от этого Roll# никакого. Так все же знает кто как делать правильно?
это в купе с постами №7 и 8 ещё больший бред.
Harter, если бы мне нужен был код, я бы его сам написал, но, мне было интересно умеет ли PiontEntity работать как мне надо
нет не умеет. пиши код сам.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
Harter (03.01.2010), Reizel (03.01.2010)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот объекта мышью Alex_Noc 3D-программирование 14 19.09.2010 17:57
Опять я... (Поворот) ARTMAN 3D-программирование 19 06.05.2009 18:20
Поворот матрицы, локальная система координат объекта FroZy Алгоритмика 1 30.12.2008 01:01
Поворот массива точек SBJoker Алгоритмика 18 10.10.2008 14:48
Поворот картинки BaD RaNDoM 2D-программирование 7 15.01.2008 21:45


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


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