Apply camera position and rotation to an object(as an fps hand or gun etc)

Hi,i’m having an hard time to apply my camera rotation to a simple object,i really don’t understand what’s going wrong this is my code for now :

MAT4 model_mat;

  mat4_init(model_mat); 

  MAT4 cam_inverse;

  mat4_inverse(cam_inverse,core_ptr->data->ubo_cam->cam_view);

  VEC3 world_cam_pos;

  world_cam_pos[0] = cam_inverse[3][0];

  world_cam_pos[1] = cam_inverse[3][1];

  world_cam_pos[2] = cam_inverse[3][2];

  mat4_translate(model_mat,world_cam_pos);

  mat4_copy(core_ptr->data->ubo_model[ROBOT0_UBO_MODEL_INDEX].model_mat,model_mat);

with this i can put an object in front of the camera view,but it gets no rotation…so i tried :

mat4_rotate_x(core_ptr->data->ubo_model[ROBOT0_UBO_MODEL_INDEX].model_mat,-((FLOAT)deg_to_rad(core_ptr->mouse->pitch)));
mat4_rotate_y(core_ptr->data->ubo_model[ROBOT0_UBO_MODEL_INDEX].model_mat,-((FLOAT)deg_to_rad(core_ptr->mouse->yaw))); 

and i tried disperatly different combinations,but the maximum that i got was the model rotating in the opposite axis and opposite angle of my view (like i was rotatin and moving up the model would go left) if i go right the model goes down etc…please i need help i have to clue on what’s happening this is becoming a nightmare for me

It is hard for me to tell you what is going on with your implementation. If cannot provide more specifics of your transforms setup I suggest you start debugging on your own by decomposing your transforms step by step, as in performing rotation about a specific axis only. Once you are happy with that, start developing your transform chain by adding a transform at a time: a second rotation, a translation, etc.

Make sure you separate your projection, view and model transforms and work on one of them at a time. Usually projection and view transforms are applied to the whole set of objects you are rendering, the only one that should be updated is the model transform (per rendered model/mesh/etc).

Cheers

hi thank you for your answer, i just wasted a month rebuildling models on blender,now i have 2 models almost perfect to deal with,i made a pistol and the arms,they have like 6k vertices,the problem is clearly that blender doesn’t provide me of the correlation between 2 different models,so i dont have the 2 models initial location,said that it’s not a problem of vulkan clearly i just spammed there to receive any help and i can build the 2 different locations in some way,still,i will build my own format,(kind of gltf but with my goals to speed up the process,and in this way i will set up the initial matrices),if you have easy solutions at this problem i would glad for your help a lot <3

Perhaps you can compute their centroids when you read the vertex info?

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.