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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

2回答

10700閲覧

3DモデルをOpenGLで読み込む方法

ShiiTakumi

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

0クリップ

投稿2018/09/14 04:31

編集2018/09/14 04:45

Blenderで作成した3DモデルをOpenGLによって読み込んで表示する(C言語で)っていうのをやりたいのですが、思っていた以上に参考文献が見つからなくて難航しています。

調査中ですが、この質問をご覧になった皆様、参考文献になるwebサイトのURL、これお勧めだよっていうのがあれば教えていただけると助かります。

よろしくお願いいたします。


編集1_20180914.13:42
大変失礼いたしました。
3Dモデルのファイルフォーマットは[Wavefront OBJ]、オブジェクトファイル(.obj)になります。

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

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

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

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

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

guest

回答2

0

ベストアンサー

3Dモデルのフォーマットはなんでしょうか?
OpenGL に3Dモデルファイルを指定するとロードしてくれるような API はないので、基本的に以下の流れになります。

  1. 3Dモデルファイルをパースする。
  2. そのデータを元に描画 API を使い、描画する。

3Dモデルファイルは obj 形式ではれば、tinyobjloader があります。
Blender でもたしか obj 形式の出力はできたと思います。

tinyobjloader でロードして、パイプライン機能を使って描画したことならありますが、今風にやるなら GLSL で描画したほうがいいでしょう。


追記

tinyobjloader のサイトに viewer example というのがあるのに気づきました。描画は固定機能パイプラインを使っていますが、参考にはなるのではないでしょうか。

linux 環境で動かしてみたら、以下のようになりました。

$ sudo apt-get install libglfw3-dev premake4 $ premake4 gmake $ make $ ./objview ~/red_pepper.obj

イメージ説明


固定機能パイプライン (fixed function pipeline)

一言でいうと、古い OpenGL の書き方です。
OpenGL に組み込みのシェーダがあり、それを使って描画する方法です。
ライトの設置や視点の変更、描画など手続き的に用意された関数を呼び出すだけなので簡単ですが、自由度は低いです。
今風の OpenGL の使い方は GLSL で自作のシェーダーを作って描画するプログラマブルパイプライン (programmable pipeline) です。

詳しくは Legacy OpenGL を参照

投稿2018/09/14 04:41

編集2018/09/21 06:34
tiitoi

総合スコア21956

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

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

ShiiTakumi

2018/09/14 09:44

情報提供を誠にありがとうございます!! 大変勉強になりました!m(__)m
ShiiTakumi

2018/09/21 05:43

>>tinyobjloader でロードして、パイプライン機能を使って描画したことならありますが、 そのパイプライン機能とはどういう意味でしょうか? ググってみたのですが少々よくわからなかったので教えていただければと思います。 初心者で申し訳ございません。 また、よろしければtiitoi様のやり方(描画)も教えていただけますと幸いです。 よろしくお願いいたします。
tiitoi

2018/09/21 06:36

固定機能パイプラインのことです。回答に追記しました。 > また、よろしければtiitoi様のやり方(描画)も教えていただけますと幸いです。 すみませんが、だいぶ以前にやったことなので、コードは残ってないかもしれないです。 あとで見つけたら貼ります。
ShiiTakumi

2018/09/21 06:37 編集

ご丁寧、ご親切にありがとうございます!大変勉強になりました。
guest

0

試しては無いですが opengl-tutorial というサイトに OBJファイルの読み込みのサンプルがありました。ご参考まで。
http://www.opengl-tutorial.org/jp/beginners-tutorials/
http://www.opengl-tutorial.org/jp/beginners-tutorials/tutorial-7-model-loading/

投稿2018/09/14 13:00

cx20

総合スコア4646

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

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

ShiiTakumi

2018/09/17 00:05 編集

そんなサイトがあったとは…ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問