添加顶点延长。
This commit is contained in:
@@ -1753,6 +1753,7 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options)
|
||||
|
||||
#ifdef _WIN32
|
||||
LoadOBJ("assets/DemoHead.obj", obj_vertices, obj_indices);
|
||||
std::vector<float> positions_test;
|
||||
LoadOBJ_test("assets/face.obj", positions_test);
|
||||
#else
|
||||
LoadOBJ("/sdcard/Android/data/com.khronos.vulkan_samples/files/assets/face_with_uv.obj", obj_vertices, obj_indices);
|
||||
@@ -1762,25 +1763,28 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options)
|
||||
generate_quad();
|
||||
prepared = true;
|
||||
|
||||
for (int i = 0; i < obj_vertices.size(); ++i)
|
||||
{
|
||||
int face_index = obj_vertices_map[i];
|
||||
float x = positions_test[face_index * 3 + 0];
|
||||
float y = positions_test[face_index * 3 + 1];
|
||||
float z = positions_test[face_index * 3 + 2];
|
||||
#ifdef _WIN32
|
||||
//for (int i = 0; i < obj_vertices.size(); ++i)
|
||||
//{
|
||||
// int face_index = obj_vertices_map[i];
|
||||
// float x = positions_test[face_index * 3 + 0];
|
||||
// float y = positions_test[face_index * 3 + 1];
|
||||
// float z = positions_test[face_index * 3 + 2];
|
||||
|
||||
float obj_x = obj_vertices[i].pos[0];
|
||||
float obj_y = obj_vertices[i].pos[1];
|
||||
float obj_z = obj_vertices[i].pos[2];
|
||||
// float obj_x = obj_vertices[i].pos[0];
|
||||
// float obj_y = obj_vertices[i].pos[1];
|
||||
// float obj_z = obj_vertices[i].pos[2];
|
||||
|
||||
//cout << "index: " << i << " face_index:" << face_index << " diff_x:" << (x - obj_x) << " diff_y:" << (y - obj_y) << " diff_z:" << (z - obj_z) << endl;
|
||||
obj_vertices[i].pos[0] = x;
|
||||
obj_vertices[i].pos[1] = y;
|
||||
obj_vertices[i].pos[2] = z;
|
||||
}
|
||||
// //cout << "index: " << i << " face_index:" << face_index << " diff_x:" << (x - obj_x) << " diff_y:" << (y - obj_y) << " diff_z:" << (z - obj_z) << endl;
|
||||
// obj_vertices[i].pos[0] = x;
|
||||
// obj_vertices[i].pos[1] = y;
|
||||
// obj_vertices[i].pos[2] = z;
|
||||
//}
|
||||
|
||||
auto vertex_buffer_size = vkb::to_u32(obj_vertices.size() * sizeof(TextureLoadingVertexStructure));
|
||||
vertex_buffer->update(obj_vertices.data(), vertex_buffer_size);
|
||||
//auto vertex_buffer_size = vkb::to_u32(obj_vertices.size() * sizeof(TextureLoadingVertexStructure));
|
||||
//vertex_buffer->update(obj_vertices.data(), vertex_buffer_size);
|
||||
update_face_vertex_buffer(positions_test.data(), obj_vertices.size());
|
||||
#endif
|
||||
|
||||
update_uniform_buffers_point(47, -0.5, -0.51, 0, 1, 1, 1, 0, 0, 0, 0, 0, -1);
|
||||
//start();
|
||||
@@ -1878,14 +1882,35 @@ void ReceiveFacePoint(float* pos, int pointCount, int width, int height)
|
||||
|
||||
}
|
||||
|
||||
void TextureLoading::extendPoint(float* pos, int start_id, int end_id, float rate)
|
||||
{
|
||||
glm::vec3 start = glm::vec3(pos[start_id * 3], pos[start_id * 3 + 1], pos[start_id * 3 + 2]);
|
||||
glm::vec3 end = glm::vec3(pos[end_id * 3], pos[end_id * 3 + 1], pos[end_id * 3 + 2]);
|
||||
glm::vec3 dir = end - start;
|
||||
glm::vec3 ex_end = end + dir * rate;
|
||||
pos[end_id * 3 + 0] = ex_end.x;
|
||||
pos[end_id * 3 + 1] = ex_end.y;
|
||||
pos[end_id * 3 + 2] = ex_end.z;
|
||||
}
|
||||
|
||||
void TextureLoading::update_face_vertex_buffer(float* pos, int pointCount)
|
||||
{
|
||||
extendPoint(pos, 68, 54);
|
||||
extendPoint(pos, 104, 103);
|
||||
extendPoint(pos, 69, 67);
|
||||
extendPoint(pos, 108, 109);
|
||||
extendPoint(pos, 151, 10);
|
||||
extendPoint(pos, 337, 338);
|
||||
extendPoint(pos, 299, 297);
|
||||
extendPoint(pos, 333, 332);
|
||||
extendPoint(pos, 298, 284);
|
||||
|
||||
for (int i = 0; i < obj_vertices.size(); ++i)
|
||||
{
|
||||
int face_index = obj_vertices_map[i];
|
||||
float x = positions_test[face_index * 3 + 0];
|
||||
float y = positions_test[face_index * 3 + 1];
|
||||
float z = positions_test[face_index * 3 + 2];
|
||||
float x = pos[face_index * 3 + 0];
|
||||
float y = pos[face_index * 3 + 1];
|
||||
float z = pos[face_index * 3 + 2];
|
||||
|
||||
obj_vertices[i].pos[0] = x;
|
||||
obj_vertices[i].pos[1] = y;
|
||||
|
||||
Reference in New Issue
Block a user