|
3D-программирование Вопросы, касающиеся программирования 3D мира |
07.04.2006, 15:22
|
#1
|
|
Спасибо, молодец то написал, я на этом учиться буду))) Но есть один вопрос. как седлать плавные развороты? до точки... ну я пытаюсь космическую стрелялку сделать. так вот, надо чтоб объект летящий (бегущий) на тебя достигнув предельно близкого расстояния выбирал другую точку в пространстве и медленно к ней поворачивался. причем желательно чтоб эта точка выбиралась так что объект как бы "уворачивался от столкновения с тобой", а не проходил сквозь...
|
|
|
07.04.2006, 15:52
|
#2
|
Элита
Регистрация: 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
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Эти посты были перемещены из темы "Создаем свой FPS". В первом посте гость благодарит impersonalis'а.
P.S. Просьба в дальнейшем не задавать вопросы в FAQ, тем более, если они не по теме.
|
(Offline)
|
|
07.04.2006, 21:02
|
#4
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
если в кратце объяснить, без кода, то:
запоминаешь углы корабля, юзаешь PointEntity, теперь вычитаешь из новых координат старые (или наоборот, хз, протестить надо), результат умножаешь допустим на 0.1 (будет типа скорость чем больше тем быстрей будет поворот)... и теперь поворачиваешь свой корабль на старые углы + результат после умножения... вот тебе и будет медленный поворот...
насчет выбора цели:
хммм... надо подумать...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
07.04.2006, 23:11
|
#5
|
Зануда с интернетом
Регистрация: 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
|
Дэвелопер
Регистрация: 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
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Да - выглядит лучше.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.04.2006, 00:39
|
#8
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
В сущности, внешний вид вторичен.
Во втором случае производительность в полтора-два раза выше.
А в старых версиях Блица за ПойнтЁнтити я замечал порою просто дикие тормоза. Да и сейчас насчет него меня терзают смутные сомнения: "перестройка" с варианта1 на вариант2 сэкономила в проекте до 10 ФПС.
ПойнтЁнтити я бы рекомендовал использовать только в простейших тестах, где производительность не важна: команда непредсказуема... хотя, может это мои очередные глюки.
|
(Offline)
|
|
08.04.2006, 01:52
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
я раньше вообще через tan делал =)))
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
как сделать плавные повороты |
Timon |
3D-программирование |
7 |
30.09.2006 13:34 |
Повороты |
SubZer0 |
Алгоритмика |
3 |
06.08.2006 19:32 |
Часовой пояс GMT +4, время: 15:25.
|