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

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

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

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

Ответ
 
Опции темы
Старый 07.04.2006, 15:22   #1
Guest
 
Сообщений: n/a
Спасибо, молодец то написал, я на этом учиться буду))) Но есть один вопрос. как седлать плавные развороты? до точки... ну я пытаюсь космическую стрелялку сделать. так вот, надо чтоб объект летящий (бегущий) на тебя достигнув предельно близкого расстояния выбирал другую точку в пространстве и медленно к ней поворачивался. причем желательно чтоб эта точка выбиралась так что объект как бы "уворачивался от столкновения с тобой", а не проходил сквозь...
 
Ответить с цитированием
Старый 07.04.2006, 15:52   #2
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Originally posted by Guest@7.4.2006, 13:22
Спасибо, молодец то написал, я на этом учиться буду))) Но есть один вопрос. как седлать плавные развороты? до точки... ну я пытаюсь космическую стрелялку сделать. так вот, надо чтоб объект летящий (бегущий) на тебя достигнув предельно близкого расстояния выбирал другую точку в пространстве и медленно к ней поворачивался. причем желательно чтоб эта точка выбиралась так что объект как бы "уворачивался от столкновения с тобой", а не проходил сквозь...
Чтоб не проходил сквозь там надо менять колизию, помоему с 2,3 на 2,1
(Offline)
 
Ответить с цитированием
Старый 07.04.2006, 20:27   #3
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Эти посты были перемещены из темы "Создаем свой FPS". В первом посте гость благодарит impersonalis'а.

P.S. Просьба в дальнейшем не задавать вопросы в FAQ, тем более, если они не по теме.
(Offline)
 
Ответить с цитированием
Старый 07.04.2006, 21:02   #4
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
если в кратце объяснить, без кода, то:

запоминаешь углы корабля, юзаешь PointEntity, теперь вычитаешь из новых координат старые (или наоборот, хз, протестить надо), результат умножаешь допустим на 0.1 (будет типа скорость чем больше тем быстрей будет поворот)... и теперь поворачиваешь свой корабль на старые углы + результат после умножения... вот тебе и будет медленный поворот...

насчет выбора цели:

хммм... надо подумать...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 07.04.2006, 23:11   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
цикл пока Модуль_разности_текушего_угла_и_нужного_угла<Дельт а
повернуть_модель на дельта*сигнум(разность_углов)
ХХХ
конец цикла
повернуть_модель на нужный_угол


нужный_угол - берём из pointEntity
текущий - pitch или yaw или roll (см. по какой оси поваричаешь)
вместо ХХХ - или оператор delay или оператор выхода (см. логику алгоритма - блокируется логика других объектов на время поворта, или алгоритм - "многопоточный")
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 07.04.2006, 23:37   #6
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Думаю, простейший код всё обьяснит. Как в плане производительности, так и в плане обьема.
Graphics3D 320,240,16,2
SetBuffer BackBuffer()

Obj1=CreateCube()
Obj2=CreateSphere()
MoveEntity Obj2,1,2,3

Cam=CreateCamera()
MoveEntity Cam,0,0,-5

Sun=CreateLight(1)

Scaner=CreatePivot()

;1---------------------
;Variant1: PointEntity
While Not KeyHit(1)
 m=MilliSecs()
 For q=1 To 10000
	PositionEntity Scaner,EntityX(Obj1),EntityY(Obj1),EntityZ(Obj1)
	PointEntity Scaner,Obj2
	TurnEntity Obj1,(EntityPitch(Scaner)-EntityPitch(Obj1))*0.00001,(EntityYaw(Scaner)-EntityYaw(Obj1))*0.00001,0
 Next
 m=MilliSecs()-m
	RenderWorld()
	Text 10,10,"POINTENTITY TEST"
	Text 10,20,"Millisecs: "+m
	Flip(1)
	Cls
Wend
TurnEntity Obj1,45,45,0

;2---------------------
;Variant2: RotateEntity
While Not KeyHit(1)
 m=MilliSecs()
 For q=1 To 10000
	RotateEntity Obj1,EntityPitch(Obj1)+DeltaPitch(Obj1,Obj2)*0.00001,EntityYaw(Obj1)+DeltaYaw(Obj1,Obj2)*0.00001,0
 Next
 m=MilliSecs()-m	
	RenderWorld()
	Text 10,10,"ROTATEENTITY TEST"
	Text 10,20,"Millisecs: "+m
	Flip(1)
	Cls
Wend
End
(Offline)
 
Ответить с цитированием
Старый 08.04.2006, 00:23   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Да - выглядит лучше.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 08.04.2006, 00:39   #8
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Да - выглядит лучше.
В сущности, внешний вид вторичен.
Во втором случае производительность в полтора-два раза выше.
А в старых версиях Блица за ПойнтЁнтити я замечал порою просто дикие тормоза. Да и сейчас насчет него меня терзают смутные сомнения: "перестройка" с варианта1 на вариант2 сэкономила в проекте до 10 ФПС.
ПойнтЁнтити я бы рекомендовал использовать только в простейших тестах, где производительность не важна: команда непредсказуема... хотя, может это мои очередные глюки.
(Offline)
 
Ответить с цитированием
Старый 08.04.2006, 01:52   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
я раньше вообще через tan делал =)))
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать плавные повороты Timon 3D-программирование 7 30.09.2006 13:34
Повороты SubZer0 Алгоритмика 3 06.08.2006 19:32


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


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