任意の画像のテクスチャマッピング
Show older comments
https://sites.google.com/site/ptbganba/sanpuru-puroguramu-nitsuite/minimalisticopengldemo?authuser=0
こちらのサイトにある方法では、任意の画像を読み込み、球体にテクスチャマッピングして回すということをしています。
私もこの方法でテクスチャマッピングしたいと考えています。
3D空間にオブジェクトを配置する方法までは分かったのですが、それに対してテクスチャマッピングをする方法が分かりません。
分かる方がおりましたら教えていただきたいです。
5 Comments
Atsushi Ueno
on 13 Jul 2021
PTB3を導入してMinimalisticOpenGLDemoを動かし、やっと質問の背景を理解しました。
C:\toolbox\Psychtoolbox\PsychDemos\OpenGL4MatlabDemos (パスの頭が違うかもしれません)
の中にソースコードが読める状態で入っています。なぜテクスチャマッピングをする方法が分からないのでしょうか?何かを実行して意図した通りに動かない等の問題が起きているのでしょうか?
本当にOpenGL,GLU,GLUTの関数が動く環境が整っているので、OpenGL関連の書籍やWebに載っている内容も殆どそのまま動かせるとおもいます。書籍と言えば昔から「赤本」と言われるガイドブックが有名です。
Atsushi Ueno
on 13 Jul 2021
Screen()という関数が何やら色んな事をやっていて、この関数の役割も良く理解する必要がありそうですね。これが「MATLABでOpenGLが動く為の窓口的な役割」を担っているようです。Screen()の中身はMEXファイルでソースは読めませんでした。
テクスチャに使う画像(メモリ)のサイズは2の累乗のサイズでなければ動作しない(もしくは意図しない動作になる)問題があるそうです。私の記憶からは完全に無くなっていました。(CGと言えば)GPUを動かす時も「機械的に動く物にデータを合わせないと上手く動かない」と言う事は非常に良くありますね(それしかないかも)。
akasa
on 14 Jul 2021
Atsushi Ueno
on 14 Jul 2021
Edited: Atsushi Ueno
on 14 Jul 2021
私もPTB3のデモを動かしたりしてみましたが、OpenGLプログラムを調べるのも時間が掛かりそうで、即答は無理そうです。お役に立てず申し訳ございません。
最初に"global GL"ってのがある以外はOpenGLプログラムと同じですね。MATLABのデータ型を使っているので感動しています。光の反射とか計算するのに「面の法線ベクトル」を定義するんですよね。
既にプリミティブの表示でお分かりかもしれませんが、プログラムが問題無く動作しても、最終的にフレームバッファ(メモリ)の内容が正しく指定され値が書き込まなければ、初期化されたままの状態(真っ黒)を表示するだけになってしまいます。また、テクスチャ特有のメモリ構造もあり、問題の追跡は更に複雑です。
既に質問内容が完全にOpenGLになっているので、いっその事OpenGLフォーラムに顔を出してみるのはどうでしょうか。当然OpenGL関連の知識を持つMATLABユーザの方もいるかもしれませんが、回答の確率を考えると断然OpenGLというかCGの専門家に問うべきでしょう。
一方OpenGLフォーラムに「MATLABでOpenGL関数を直接叩いてCGを動かす人」は滅多にいないでしょう。なので注意すべき点は「MALTABでOpenGLを動かす事と、OpenGLの機能を動かす事を明確に切り分ける」事です。
akasa
on 16 Jul 2021
Answers (0)
Categories
Find more on ライティング、透明度、およびシェーディング in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!