![](images/chestnut/misc/left.gif) |
PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач. |
07.06.2013, 23:34
|
#1
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Пивот для камеры
Здравствуйте, столкнулся с проблемой, ни как не получается сделать пивот для камеры, то есть чтобы камера не крутилась на 360 градусов по оси Y, пробовал разобрать принцип работы из примеров в папке DEMO, но там очень большой код, и много лишнего. Пробовал сам получать угол поворота камеры и возвращать его. но ничего не получается. Кому не сложно напишите пожалуйста пример. Заранее спасибо.
|
(Offline)
|
|
08.06.2013, 12:30
|
#2
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: Пивот для камеры
Плюнь, в пурике огр полное говно. Юзай ксорс или ещё что нибудь
|
(Offline)
|
|
08.06.2013, 12:40
|
#3
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Ответ: Пивот для камеры
Сообщение от Кирпи4
Плюнь, в пурике огр полное говно. Юзай ксорс или ещё что нибудь
|
Ну я бы так не сказал. По сабжу кто нибудь поможет? (Обидно что в Blitz, это реализуется несколькими строчками кода...)
|
(Offline)
|
|
08.06.2013, 23:03
|
#4
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Ответ: Пивот для камеры
Вот, сам сделал простой пример, исходя из примеров.
![](images/chestnut/misc/code_html.gif)
IncludeFile "Screen3DRequester.pb"
Structure Vector3
x.f
y.f
z.f
EndStructure
Structure s_Entity
EntityBody.i
Fov.f
MainNode.i
CameraNode.i
EndStructure
Declare HandleEntity(*Entity.s_Entity)
Define Robot.s_Entity
If InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
Parse3DScripts()
If Screen3DRequester()
Add3DArchive("Textures" , #PB_3DArchive_FileSystem)
Add3DArchive("Models" , #PB_3DArchive_FileSystem)
Add3DArchive("Packs/waterworld.zip", #PB_3DArchive_Zip)
CreateMaterial(0, LoadTexture(0, "dirt.jpg"))
LoadMesh (0, "robot.mesh")
CreateEntity(0, MeshID(0), #PB_Material_None, 0, 0, 0)
HideEntity(0, 1)
LoadMesh(2, "waterworld.mesh")
CreateEntity(2, MeshID(2), MaterialID(0))
With Robot
\MainNode = CreateNode(#PB_Any)
\CameraNode = CreateNode(#PB_Any, 0, 80, 0)
AttachNodeObject(\MainNode , NodeID(\CameraNode))
EndWith
CreateCamera(0, 0, 0, 100, 100)
AttachNodeObject(Robot\CameraNode, CameraID(0))
CreateLight(0, RGB(0, 255, 255), 200, 100, 200, #PB_Light_Point)
Repeat
Screen3DEvents()
HandleEntity(@Robot)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized")
EndIf
End
Procedure HandleEntity(*Entity.s_Entity)
Protected.Vector3 Forward, Strafe, PosMain, PosDir, PosStrafe
Protected.f MouseX, MouseY
Static Rot.Vector3
With *Entity
If ExamineMouse()
MouseX = -(MouseDeltaX()/200) * \Fov
MouseY = -(MouseDeltaY()/200) * \Fov
Rot\z = 0
Rot\y + MouseX
If NodePitch(\CameraNode) < 50 And MouseY > 0
Rot\x + MouseY
ElseIf NodePitch(\CameraNode) > -50 And MouseY < 0
Rot\x + MouseY
EndIf
If \Fov < 50
\Fov + 2
EndIf
EndIf
If ExamineKeyboard()
Rot\x * 0.30
Rot\y * 0.30
Rot\z * 0.30
EndIf
RotateEntity(\EntityBody, 0, Rot\y, 0, #PB_Relative)
RotateNode(\CameraNode , Rot\x, 0, 0, #PB_Relative)
RotateNode(\MainNode, 0, EntityYaw(\EntityBody), 0)
EndWith
EndProcedure
|
(Offline)
|
|
11.06.2013, 21:40
|
#5
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Ответ: Пивот для камеры
Заметил в этом коде проблему ,если установить камеру в точку, то она не крутится в точке, а смещается с точки и крутится, как решить такую проблему не знаю, уже не один вечер сижу разбираюсь...
|
(Offline)
|
|
14.06.2013, 15:57
|
#6
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: Пивот для камеры
Чувак, я серьёзно - огр неудобный. Вот, тебе в помощь:
http://forum.boolean.name/showpost.p...&postcount=124
и начинай покорять геймдев с ксорсом
|
(Offline)
|
|
17.06.2013, 11:55
|
#7
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Ответ: Пивот для камеры
Да норм всё. Уже разобрался.
|
(Offline)
|
|
17.06.2013, 18:32
|
#8
|
Нуждающийся
Регистрация: 22.05.2013
Сообщений: 53
Написано 3 полезных сообщений (для 26 пользователей)
|
Ответ: Пивот для камеры
Кстати, кому будет нужно, пишите расскажу и покажу.
|
(Offline)
|
|
17.06.2013, 19:34
|
#9
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Пивот для камеры
Кому-нибудь когда-нибудь в любом случае пригодится - форум для того и нужен, что бы делиться полезными мыслями с другими. Так что пиши, выкладывай, не стесняйся. Чем подробнее, тем больше шансов что кому то поможешь. Могут конечно налететь "знатоки" и обплевать, но критика никогда не была лишней, даже если она плохая.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:51.
|