質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

621閲覧

[opengl] 頂点には、最大 8 つの異なるテクスチャ座標を含めることができるとはどいうことなのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/10/31 02:00

提示コードですが参考サイトより

テクスチャ座標はほぼ同じですが、Assimp ではモデルが頂点ごとに最大 8 つの異なるテクスチャ座標を持つことができます。8 は使用しません。テクスチャ座標の最初のセットのみを考慮します。また、メッシュに実際にテクスチャ座標が含まれているかどうかも確認します (常にそうであるとは限りません)。

という説明がりますが頂点にはUV座標は一つのみという常識があると思うのですがこの文章は何がいいたいのでしょうか?

知りたいこと

モデルが頂点ごとに最大 8 つの異なるテクスチャ座標を持つことができますは何を言っているのか知りたい

参考サイトコード:https://learnopengl.com/code_viewer_gh.php?code=includes/learnopengl/model.h
参考サイト:https://learnopengl.com/Model-Loading/Model

cpp

1 2/*############################################################################################ 3# モデル ロード 4############################################################################################*/ 5FrameWork::Model FrameWork::Resource::LoadModel(const std::string path) 6{ 7 Assimp::Importer importer; 8 9 const aiScene* scene = importer.ReadFile("asset/model/mesh.fbx", 10 aiProcess_CalcTangentSpace | 11 aiProcess_Triangulate | 12 aiProcess_JoinIdenticalVertices | 13 aiProcess_SortByPType); 14 15 ProcessNode(scene->mRootNode, scene); 16 17 18 19 20 21 FrameWork::Model model; 22 23 model.mesh = meshes; 24 25 26 27 28 meshes.clear(); 29 return model; 30} 31 32void FrameWork::Resource::ProcessNode(aiNode* node, const aiScene* scene) 33{ 34 for (unsigned int i = 0; i < node->mNumMeshes; i++) 35 { 36 aiMesh* mesh = scene->mMeshes[node->mMeshes[i]]; 37 meshes.push_back(ProcessMesh(mesh, scene)); 38 } 39 40 for (unsigned int i = 0; i < node->mNumChildren; i++) 41 { 42 ProcessNode(node->mChildren[i], scene); 43 } 44 45} 46 47FrameWork::Mesh FrameWork::Resource::ProcessMesh(aiMesh* mesh, const aiScene* scene) 48{ 49 std::vector<VertexAttribute> vertices; 50 std::vector<unsigned int> indices; 51 52 for (unsigned int i = 0; i < mesh->mNumVertices; i++) 53 { 54 VertexAttribute vertex; 55 56 vertex.position[0] = mesh->mVertices[i].x; 57 vertex.position[1] = mesh->mVertices[i].y; 58 vertex.position[2] = mesh->mVertices[i].z; 59/////////////////////////////////////////////////////////////////////////// 60 //テクスチャ座標があるかどうか? 61 if (mesh->mTextureCoords[0] != nullptr) 62 { 63 vertex.uv[0] = mesh->mTextureCoords[0][i].x; 64 vertex.uv[1] = mesh->mTextureCoords[0][i].y; 65 } 66 else 67 { 68 vertex.uv[0] = 0.0f; 69 vertex.uv[1] = 0.0f; 70 } 71/////////////////////////////////////////////////////////////////////////// 72 73 74 vertices.push_back(vertex); 75 } 76 77 for (unsigned int i = 0; i < mesh->mNumFaces; i++) 78 { 79 aiFace face = mesh->mFaces[i]; 80 for (unsigned int j = 0; j < face.mNumIndices; j++) 81 { 82 indices.push_back(face.mIndices[j]); 83 } 84 } 85 86 Mesh data; 87 data.vertex = vertices; 88 data.index = indices; 89 90 91 return data; 92} 93

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テクスチャ座標を最大8つまで持つモデルをimportできるけどこの例では1つしか使わないという意味では無いでしょうか。テクスチャを重ねたりするときは座標を複数持つことはあるんじゃないですかね?

投稿2022/10/31 04:30

a.com

総合スコア871

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問