• Advertisement

# NatalieBerry88

Member

3

100 Neutral

• Rank
Newbie
1. ## OpenGL 3d Open GL Game - How to fix a object to the camera =)

[color="#9932CC"] Hey thanks for the reply! I found some other code that helped: Added this on the camera.cpp: [code]void CCamera::RotateAroundPoint(CVector3 vCenter, float angle, float x, float y, float z) { CVector3 vNewPosition; // To rotate our position around a point, what we need to do is find // a vector from our position to the center point we will be rotating around. // Once we get this vector, then we rotate it along the specified axis with // the specified degree. Finally the new vector is added center point that we // rotated around (vCenter) to become our new position. That's all it takes. // Get the vVector from our position to the center we are rotating around CVector3 vPos = m_vPosition - vCenter; // Calculate the sine and cosine of the angle once float cosTheta = (float)cos(angle); float sinTheta = (float)sin(angle); // Find the new x position for the new rotated point vNewPosition.x = (cosTheta + (1 - cosTheta) * x * x) * vPos.x; vNewPosition.x += ((1 - cosTheta) * x * y - z * sinTheta) * vPos.y; vNewPosition.x += ((1 - cosTheta) * x * z + y * sinTheta) * vPos.z; // Find the new y position for the new rotated point vNewPosition.y = ((1 - cosTheta) * x * y + z * sinTheta) * vPos.x; vNewPosition.y += (cosTheta + (1 - cosTheta) * y * y) * vPos.y; vNewPosition.y += ((1 - cosTheta) * y * z - x * sinTheta) * vPos.z; // Find the new z position for the new rotated point vNewPosition.z = ((1 - cosTheta) * x * z - y * sinTheta) * vPos.x; vNewPosition.z += ((1 - cosTheta) * y * z + x * sinTheta) * vPos.y; vNewPosition.z += (cosTheta + (1 - cosTheta) * z * z) * vPos.z; // Now we just add the newly rotated vector to our position to set // our new rotated position of our camera. m_vPosition = vCenter + vNewPosition; }[/code] Then in the main.cpp I added the key states: [code] // We made 2 changes from the Camera2 tutorial. Instead of gCamera.RotateView() // we use our new RotateAroundPoint() function. We pass in the camera's view // point. This will be the point that we rotate our camera position around. if(GetKeyState(VK_LEFT) & 0x80) { // If we hit the LEFT arrow key // We want to rotate around the Y axis so we pass in a positive Y speed g_Camera.RotateAroundPoint(g_Camera.m_vView, kSpeed, 0, 1, 0); } if(GetKeyState(VK_RIGHT) & 0x80) { // If we hit the RIGHT arrow key // Use a negative Y speed to rotate around the Y axis g_Camera.RotateAroundPoint(g_Camera.m_vView, -kSpeed, 0, 1, 0); }[/code] The only problem is that I added in the RenderScene() function [code] gPlayer.DrawPlayer(); glTranslatef(g_Camera.m_vView.x, 0, g_Camera.m_vView.z);[/code] However as you see above I have a player class, so I'm not so sure how to point glTranslatef to only the player.. at the moment it compiles but the whole world turns around weirdly [b][color="#800080"]Netalie xxx[/color][/b] [/color]
2. ## 3d Open GL Game - How to fix a object to the camera =)

[color="#DDA0DD"]Hi guys![img]http://cboard.cprogramming.com/images/smilies/redface.png[/img][/color][color="#DDA0DD"] I have successfully created a Player class which shows a player ( lovely cow! [img]http://cboard.cprogramming.com/images/smilies/redface.png[/img][/color][color="#4B0082"][color="#DDA0DD"] ). However, I wanted to make the player be static in the screen, since I wanted to create a racing-supermario like game. Basically what I have now is a camera that goes around but I want to stick it to the player mesh. Here is some code: [b]Camera look() function code[/b][/color] [/color][CODE]void CCamera::Look(){ // Give openGL our camera position, then camera view, then camera up vector gluLookAt(m_vPosition.x, m_vPosition.y, m_vPosition.z, m_vView.x, m_vView.y, m_vView.z, m_vUpVector.x, m_vUpVector.y, m_vUpVector.z); }[/CODE][color="#4B0082"] [color="#DDA0DD"][b]Player.h[/b][/color] [/color][CODE]#ifndef _PLAYER_H#define _PLAYER_H #include "Model_3DS.h" // This class was made to handle models created for player use. class Player { Model_3DS playerModel; public: void LoadPlayer(); //Method to load player mesh void DrawPlayer(); //Method to draw player mesh Player(); // Constructor virtual ~Player(); }; #endif[/CODE][color="#4B0082"] [b]Player.cpp[/b] [/color][CODE]#include "Player.h" Player::Player() { playerModel.scale = 3.0f;//Scale the model up playerModel.pos.x = 250.0f;//Set the x position playerModel.pos.y = 15;//Set the y position playerModel.pos.z = 400.0f;//Set the z position } Player::~Player() { } void Player::LoadPlayer(){ playerModel.Load("Data/3DS/SecondaryObjects/cow2.3ds"); // Load a 3ds model } void Player::DrawPlayer(){ playerModel.Draw();//Draw tree model };[/CODE] [color="#4B0082"] [color="#DDA0DD"]I was thinking that I should call the position of the camera in the player position, but I am not so sure how [/color][/color][color="#DDA0DD"][img]http://cboard.cprogramming.com/images/smilies/frown.png[/img] [/color][color="#DDA0DD"]If somebody could give me a hand would be great! Also, if you want to add me on skype so its quicker would be good too ^^: [/color][color="#DDA0DD"][b]natalieberrystraw is my skype[/b]. Thanks in advance! <3[/color] [color="#9932CC"][b]Natalie xxx[/b][/color]
3. ## OpenGL 3d Open GL Game - How to fix a object to the camera =)

[color="#4B0082"]Hi guys![/color][img]http://cboard.cprogramming.com/images/smilies/redface.png[/img][color="#4B0082"] I have successfully created a Player class which shows a player ( lovely cow! [/color][img]http://cboard.cprogramming.com/images/smilies/redface.png[/img][color="#4B0082"] ). However, I wanted to make the player be static in the screen, since I wanted to create a racing-supermario like game. Basically what I have now is a camera that goes around but I want to stick it to the player mesh. Here is some code: [b]Camera look() function code[/b] [/color][CODE]void CCamera::Look(){ // Give openGL our camera position, then camera view, then camera up vector gluLookAt(m_vPosition.x, m_vPosition.y, m_vPosition.z, m_vView.x, m_vView.y, m_vView.z, m_vUpVector.x, m_vUpVector.y, m_vUpVector.z); }[/CODE][color="#4B0082"] [b]Player.h[/b] [/color][CODE]#ifndef _PLAYER_H#define _PLAYER_H #include "Model_3DS.h" // This class was made to handle models created for player use. class Player { Model_3DS playerModel; public: void LoadPlayer(); //Method to load player mesh void DrawPlayer(); //Method to draw player mesh Player(); // Constructor virtual ~Player(); }; #endif[/CODE][color="#4B0082"] [b]Player.cpp[/b] [/color][CODE]#include "Player.h" Player::Player() { playerModel.scale = 3.0f;//Scale the model up playerModel.pos.x = 250.0f;//Set the x position playerModel.pos.y = 15;//Set the y position playerModel.pos.z = 400.0f;//Set the z position } Player::~Player() { } void Player::LoadPlayer(){ playerModel.Load("Data/3DS/SecondaryObjects/cow2.3ds"); // Load a 3ds model } void Player::DrawPlayer(){ playerModel.Draw();//Draw tree model };[/CODE][color="#4B0082"] I was thinking that I should call the position of the camera in the player position, but I am not so sure how [/color][img]http://cboard.cprogramming.com/images/smilies/frown.png[/img] [color="#4B0082"]If somebody could give me a hand would be great! Also, if you want to add me on skype so its quicker would be good too ^^: [/color][color="#800080"][b]natalieberrystraw is my skype[/b]. Thanks in advance! <3[/color] [color="#800080"][b]Natalie xxx[/b][/color]
• Advertisement