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

deck.glをCentOSで動かしてみる。

はじめに

野暮用でビックデータを可視化することになってしまい、今迄はOpenLayersをゴリゴリっとしてたのですが、MVT使っても厳しかろうというところから、WebGL関連で可視化を目指すことにしました。

※最終的には、deck.glとMVTの合わせ技に行き着きました。
※お金があるならというか、従量課金制が許されればMapbox GL JSとMVTの組み合わせなんでしょうね。

何にしようかと考えていたところ、UBER社が提供しているdeck.glが気になり、チョロッとお試しをdeck.glがベースとなっているkepler.glでやってみたところ、ええ感じで動くじゃないですか!

そんじゃあ、deck.glで実装決定!ということから、まずはdeck.glの環境構築に取りかかりました。

kepler.glについては、何かの機会にお話するとして(某ローカルコミュニティで発表予定)、今回はdeck.glの実装のみのお話を簡単に記録します。

対象サーバはWindowsじゃなく今回もCentOS 7です。
CentOS 8が2〜3日前に公開されたので、そこからCentOS 8で実相も考えたのですが、先の某ローカルコミュニティでの発表が来週に控えているので、既に稼働中のCentOS 7上で実装することにしました。

ちなみに、こんなこと書いていますが、実際にCentOS 7で実装してみて思ったのですが、CentOS 8で実装したとしても何も異る点は無いはずです。
理由は、実相はnode.js上で行うため、node.jsの実装方法自体が変わらない限り変更は無いということです。

参考にさせて頂いたサイトはこちらになります。

https://qiita.com/keijipoon/items/92d9551930fe52d6c90a

そろそろ、この手の記事をQiitaに書いた方が楽なんじゃないか?とか、そっちの方が見てもらえるんじゃないかとか思ってはいるのですが、趣味なんです(^^;

node.jsのインストール

node.jsのインストールは先日こちらの記事に記していますので、そのまんま実装しました。
と言うことで、参照してください。

node.jsを既にインストールされている方は、無視して次の作業を行ってください。

luma.glをインストール

コマンドライン上で以下のコマンドを実行します。

終わりです。

deck.glのインストール

こちらのサイトからダウンロードしてきます。

deck.glのインストールと言っても、取り敢えずダウンロードして、展開するだけです。

https://github.com/uber/deck.gl

適当なフォルダへ解凍します。

サンプルプログラムを動かしてみる。

なんか既にインストール終わっているみたいです。
サンプルプログラムを幾つか試しに動かしてみようと思ったのですが(2分程)、実際に動くのは参考にさせて頂いたサイトでも紹介されていたサンプルだけでした。

ということで、ほぼ同じ感じの内容ですが、以下のフォルダへ移動します。
(解凍したdeck.glの中にあります。)

後は、そのまんま実行するだけ。

終わりです。
環境さえ整っていれば、Windowsで実装するのと何も変わりませんでした。
という結果です。逆に、Linuxの方が楽じゃね?

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

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

ソースの取得

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

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

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

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

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

svn co https://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でインストールするパッケージをまとめました。
少し楽になるはずです。
https://tech.godpress.net/?p=778
==============

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

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

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

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

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

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

CentOS 7にGDALとprojを入れる。(https://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(閉塞カリング)

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

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

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

 

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

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

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