所以,我用这个画了一个黄色的长方体
from to value
<dbl> <dbl> <dbl>
1 0 0 7
2 1 0 8
3 2 0 6
4 3 0 6
5 4 0 6
6 5 1 7
7 6 1 6
比例因子 ID Industry1
<dbl> <chr>
1 0 Footwear manufacturing
2 1 Footwear manufacturing
3 2 Footwear manufacturing
4 3 Footwear manufacturing
5 4 Footwear manufacturing
6 5 Seafood & other miscellaneous foods, n.e.c.
和位置glm::mat4 yellow_bone_obj_mat = m_bone_animation->get_yellow_mat();
glUniformMatrix4fv(glGetUniformLocation(shader.program, "model"), 1, GL_FALSE,
glm::value_ptr(yellow_bone_obj_mat));
bone_obj->obj_color = m_bone_animation->colors[1];
draw_object(shader, *bone_obj);
我希望我的黄色长方体向右旋转90度,而黄色长方体的末端位置要粘住红色立方体
应该看起来像这样
我尝试过
{ 0.5f,4.0f,0.5f }
将此作为输出
接下来我尝试了
{ 2.0f,3.0f,2.0f }
将此作为输出。无论我做什么,长方体都不会掉在右侧。我不确定为什么
答案 0 :(得分:1)
您实际要做的是旋转完美的立方体并缩放旋转的立方体。旋转了多维数据集,但之后应用了缩放比例,因此它似乎总是朝向相同的方向。
您必须缩放立方体,然后旋转长方体:
m_yellow_mat = translate(pivot) * rotate * translate(-pivot) * scale
请注意,诸如rotate
,scale
和translate
之类的操作会创建一个新矩阵,并将当前矩阵乘以新矩阵。例如:
vec3 scale = glm::vec3(0.5f, 4.0f, 0.5f);
vec3 pivot = glm::vec3(0.0f, 0.5f, 0.0f);
m_yellow_mat = glm::mat4(1.0f);
m_yellow_mat = glm::translate(m_yellow_mat, pivot);
m_yellow_mat = glm::rotate(m_yellow_mat, glm::radians(angle), glm::vec3(0, 0, 1));
m_yellow_mat = glm::translate(m_yellow_mat, -pivot);
m_yellow_mat = glm::scale(m_yellow_mat, scale);