「3D」カテゴリーアーカイブ

OpenSceneGraphをLinuxへインストールする。

今回は、CentOS 7へOpenSceneGraphをインストールする手順について記載する。

ソースの取得

まず、ソースをダウンロードする。
以下のサイトから最新のソースを取得した。

http://www.openscenegraph.org/index.php/download-section/developer-releases

Stable Releaseを使用することも考えたのだが、しばらく更新がないので最新盤を入手した。

Stable Releaseを使用することも考えたのだが、しばらく更新がないので最新盤を入手した。

ダウンロードする方法は、まず適当なディレクトリへ移動して、以下のコマンドを実行する。

svn co http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.5.1 OpenSceneGraph

OpenSceneGraphディレクトリ下にソースがダウンロードされるので、この後コンパイルなどを行う。

ツールの準備

gccなど基本的なツールはインストール済みであることを前提とする。
まず必要となるのが、cmakeである。
以下のコマンドを実行しcmakeをインストールする。

間違いが無いことを確認して「y」を押して次へ進む。(以降説明は省略する。)

必要なのはこれだけです。
その他に必要なライブラリ等はこの後で適宜インストールを行う。

ちょっと待った!!

OpenSceneGraphは色んなパッケージを使うため、標準のリポジトリだけではすべてをインストールすることが出来ない。
そこで、EPELリポジトリを頻繁に使うことになる。
作業に入る前にEPELリポジトリを入れておくと便利だ!

入れ方は色々とあるんだけど、長ったらしい名前は苦手なのでyumで入れちゃいましたw良いのだろうか?

これ以外と便利なんだけど、なかなか紹介さていない。

コンパイルの前準備(cmake)

OpenSceneGraphのディレクトリへ移動して、cmakeを実行する。
README.txtに基本的な手順は記載されている。

最初の方で、「not found」とか「Failed」とかいっぱい出ている。
これから、それらを取り除いていく作業を行う。

出来れば、2つ以上のコマンドライン操作が出来る状態にして、上記のコメントを観ながらインストール作業を続ける。

手始めに以下のエラーを取り除く!

コマンドラインでcurlコマンドは操作可能だと思うのだが???という時には、こんな感じで探してみると見付かる。

上の例では、curl.x86_64とlibcurl.x86_64とpython-pycurl.x86_64はインストールされている。
libcurl-devel.x86_64はまだインストールされていない。

概ねこれらのメッセージで表示さている内容は、「-devel」が付いたパッケージがインストールされていないことが多い。

いつもの様にyumでインストールを行う。

こんな感じの作業が暫く続く。。。。。

==============
2017-09-09追記:
下記URLにyumでインストールするパッケージをまとめました。
少し楽になるはずです。
http://tech.godpress.net/?p=778
==============

次は、Jasperが無いと言われているので、

コメントでは、「Jasper」となっているが、探してみると小文字だったりすることもあったり、幾度か以下のコマンドを実行して探していく。

yum list | grep -i xxxxx
(「xxxxx」には対象となるパッケージ名称を指定する。)

実際に入れたパッケージは以下の通り。

よく見ると、GDALも入っている。
GDALはEPELリポジトリが必要なので、先に説明をしていますがリポジトリの登録をお忘れなく。

GDALのインストールは、他でも使用する可能性があるので真面目にインストールすることにする。(何時もまじめじゃないのか?)
そんなことはどうでも良いんだけど、以前にGDALをCentOS 7にインストールした記録があるのでそちらを参考にする。

CentOS 7にGDALとprojを入れる。(http://tech.godpress.net/?p=569)

簡単にコマンドだけ

と、ここまでは比較的順調なのです。
ここから面倒なffmpegのインストールが待ち受けいます。。。

でどこからともなく、

こんな感じになっているので、取り敢えず全部入れちゃえ!ということで

とやってみました。

試しにcmakeを再度やってみるとこんな感じかな?

大分減りました!

しかしここで悩ましい「gta」ってなんだ?
解らない時にはyum先生に聞いてみる。

libgtaは入っているから、多分libgta-devel辺りが怪しい。

gtaが見つかったみたいだからOK!
#半ばヤケクソです!!

次ぎもSDL2とSDLが。。。
同じようにこんな感じであたりをつけます。

そんでもって要らないパッケージがインストールされることが無いようにちゅいしながら。。。だけど解らないw
と言うことで、ググって&Wiki見てみる。

https://ja.wikipedia.org/wiki/SDL

なんとなく全部必要そうだから。。。。

後少し!と思っている現在。

経緯は省略して以下のコマンドをひたすらに調べつつ打ち込む!

一区切りが付いたところで、cmakeをもう一度走らせてみると。。。。

こんな感じになっている。

もう一回cmakeを実行するとこんな感じ。

ここまでが通常の手順どおりだと思います。
でも、cmakeって何度かやり直すと以前に出て行たメッセージが出力されなくなったりして、実際にすべてが準備されているかどうかが不安になります。

そこで、便利なツールのご紹介です。

ここまで真面目に読んだ方には御免なさいm(__)m
cmake-guiを使います。

インストールは至って簡単です。

これだけです。

cmake-guiを実行すると、こんな感じで見ることができます。

次回はこちらの使い方を説明します。

 

 

ノートPCへLinuxをインストールしようとして断念した。

今回は失敗談です。

GeForce 740Mを搭載したノートPCへCentOS 7をインストールして、NVIDIAのドライバを適用しようと試みました。

いくつかの方法を試みましたが、残念ながら断念することにしました。

まずは普通にCentOS 7をインストールしました。

ここでも一波乱ありましたが、CD-ROMからインストールは問題なく出来たので?その話は省略f^_^;)

最初は何も考えずにNVIDIAのドライバをインストールしました。

完全にダメでした。

NVIDIA Optimus Technologyが原因でした。

BIOSでIntel HDを無効にすることを考えるも、そんな設定は無いw

しばらく調べて、bumblebeeなるものを発見!

行けるか!?と期待したが、やはりNVIDIAのドライバはインストール出来るものの、起動時にscreenが無いと怒られる。

/etc/xorg.confを削除して、startxを起動すると画面は立ち上がるものの、nvidiaのドライバが認識されずOpenGLも使えない_| ̄|○

この問題を解決できず、最終的に断念しました。

誰か情報お持ちであれば、教えて〜と言いたいが、きっとここを見に来た人も同じ問題で躓いていることだろうと半ば諦めています。

というより、誰かが見てくれる可能性の方が少ないかなf^_^;)

カリングについて

カリング(culling)一般的にはあまり聞きなれないことばですが、3次元描画処理における描画対象と描画対象外を仕分けする処理になります。

と言っても解り難いと思いますので、簡単に説明します。

最近は、スマフォなどに付属しているカメラがありますが、そこに写っている内容とカメラを通さずに自分の目で見た風景を比較してください。

カメラに写っている画像は、目で見える風景の一部になっていることが判ります。

カリングは、このカメラのレンズを通して写っている対象を描画の対象に絞る行為を行います。

では具体的に3つのカリング方法について説明します。

backface culling(バックフェースカリング)

最も簡単なカリングで、カメラを視点としてカメラに背を向けている面(フェース)を描画の対象から除外します。

裏向きのポリゴンに表示されている内容を描画させない様にする処理です。

実際には、設定などによって裏向きでも描画の対象にすることが出来たりする場合もありますが、基本的には裏面は見えない訳であり、描画の対象から外してしまおうということです。

furustum culling(視錐台カリング)

カメラは基本的に四角い枠の中に画像を描画します。これを画角と称しましょう。

画角に収まらる範囲の物体を描画対象とし、それ以外を描画対象から除外します。

ocllusion culling(閉塞カリング)

画角に入っているけど、何かの物体が視点とその物体の間にあり見えない状態があります。

例えば、ビルの陰に隠れてしまって見えないビルの向こう側の風景です。

そこに含まれる物体を描画対象から除外します。

 

これらのカリング機能は組み合わせたりすることで、より厳密に描画対象を絞り込むことが出来ます。

描画対象を絞り込むことで、画像を実際に描画する処理を実行する際に掛かる時間を短縮することが出来ます。

絵に写らないんだけら描画処理する必要はないでしょ!?というのが、この機能です。