「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をインストール

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

# npm install --save luma.gl

終わりです。

deck.glのインストール

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

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

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

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

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

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

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

# cd /xxxxx/deck.gl/deck.gl-master/examples/website/3d-heatmap

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

# npm start

終わりです。
環境さえ整っていれば、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をインストールする。

# yum install cmake
Loaded plugins: fastestmirror, langpacks, nvidia
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * elrepo: ftp.ne.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
Resolving Dependencies
--> Running transaction check
---> Package cmake.x86_64 0:2.8.12.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================
 Package      Arch          Version                 Repository   Size
======================================================================
Installing:
 cmake        x86_64        2.8.12.2-2.el7          base        7.1 M

Transaction Summary
======================================================================
Install  1 Package

Total download size: 7.1 M
Installed size: 27 M
Is this ok [y/d/N]:

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

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

ちょっと待った!!

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

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

yum install epel-release

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

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

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

# cd OpenSceneGraph

# cmake .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE 
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Found OpenGL: /usr/lib64/libGL.so 
-- Performing Test GL_HEADER_HAS_GLINT64
-- Performing Test GL_HEADER_HAS_GLINT64 - Success
-- Performing Test GL_HEADER_HAS_GLUINT64
-- Performing Test GL_HEADER_HAS_GLUINT64 - Success
-- Found Freetype: /usr/lib64/libfreetype.so (found version "2.4.11") 
-- Found JPEG: /usr/lib64/libjpeg.so 
-- Could NOT find Jasper (missing: JASPER_LIBRARIES JASPER_INCLUDE_DIR) 
-- Found LibXml2: /usr/lib64/libxml2.so (found version "2.9.1") 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7") 
-- Could NOT find GDAL (missing: GDAL_LIBRARY GDAL_INCLUDE_DIR) 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
-- checking for module 'gta'
-- package 'gta' not found
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) 
-- Could NOT find GStreamer (missing: GSTREAMER_INCLUDE_DIRS GSTREAMER_LIBRARIES GSTREAMER_VERSION GSTREAMER_BASE_INCLUDE_DIRS GSTREAMER_BASE_LIBRARIES GSTREAMER_APP_INCLUDE_DIRS GSTREAMER_APP_LIBRARIES GSTREAMER_PBUTILS_INCLUDE_DIRS GSTREAMER_PBUTILS_LIBRARIES) 
-- Found GLIB: /usr/include/glib-2.0;/usr/lib64/glib-2.0/include (found version "2.46.2") 
-- Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'cairo'
-- found cairo, version 1.14.2
-- checking for module 'poppler-glib'
-- package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
-- package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
-- package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
-- package 'gtkglext-x11-1.0' not found
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found
-- Found Qt4: /usr/bin/qmake-qt4 (found version "4.8.5") 
-- Found PNG: /usr/lib64/libpng.so (found version "1.5.13") 
-- Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Performing Test _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS
-- Performing Test _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS - Success
-- Performing Test _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS
-- Performing Test _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_SUN
-- Performing Test _OPENTHREADS_ATOMIC_USE_SUN - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED
-- Performing Test _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC
-- Performing Test _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC - Failed
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for sched_yield
-- Looking for sched_yield - found
-- Looking for pthread_setconcurrency
-- Looking for pthread_setconcurrency - not found
-- Looking for pthread_getconcurrency
-- Looking for pthread_getconcurrency - not found
-- Looking for pthread_setaffinity_np
-- Looking for pthread_setaffinity_np - not found
-- Performing Test HAVE_THREE_PARAM_SCHED_SETAFFINITY
-- Performing Test HAVE_THREE_PARAM_SCHED_SETAFFINITY - Success
-- checking for module 'xrandr'
-- found xrandr, version 1.4.2
-- Looking for gethostbyname in nsl
-- Looking for gethostbyname in nsl - found
-- Looking for socket in socket
-- Looking for socket in socket - not found

The build system is configured to install libraries to /usr/local/lib64
Your applications may not be able to find your installed libraries unless you:
 set your LD_LIBRARY_PATH (user specific) or
 update your ld.so configuration (system wide)
You have an ld.so.conf.d directory on your system, so if you wish to ensure that
applications find the installed osg libraries, system wide, you could install an
OpenSceneGraph specific ld.so configuration with:
 sudo make install_ld_conf

-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph
#

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

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

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

-- Could NOT find CURL (missing:  CURL_LIBRARY CURL_INCLUDE_DIR)

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

# yum list | grep curl
curl.x86_64                                7.29.0-35.el7.centos        @base    
libcurl.x86_64                             7.29.0-35.el7.centos        @base    
python-pycurl.x86_64                       7.19.0-19.el7               @base    
libcurl.i686                               7.29.0-35.el7.centos        base     
libcurl-devel.i686                         7.29.0-35.el7.centos        base     
libcurl-devel.x86_64                       7.29.0-35.el7.centos        base     

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

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

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

# yum -y install libcurl-devel
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libcurl-devel.x86_64 0:7.29.0-35.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================
 Package                 アーキテクチャー バージョン                        リポジトリー    容量
=================================================================================================
インストール中:
 libcurl-devel           x86_64           7.29.0-35.el7.centos              base           299 k

トランザクションの要約
=================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 299 k
インストール容量: 623 k
Downloading packages:
libcurl-devel-7.29.0-35.el7.centos.x86_64.rpm                             | 299 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libcurl-devel-7.29.0-35.el7.centos.x86_64                        1/1 
  検証中                  : libcurl-devel-7.29.0-35.el7.centos.x86_64                        1/1 

インストール:
  libcurl-devel.x86_64 0:7.29.0-35.el7.centos                                                    

完了しました!

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

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

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

# yum -y install jasper jasper-devel
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ jasper.x86_64 0:1.900.1-29.el7 を インストール
---> パッケージ jasper-devel.x86_64 0:1.900.1-29.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================
 Package                  アーキテクチャー   バージョン                   リポジトリー      容量
=================================================================================================
インストール中:
 jasper                   x86_64             1.900.1-29.el7               base              24 k
 jasper-devel             x86_64             1.900.1-29.el7               base             375 k

トランザクションの要約
=================================================================================================
インストール  2 パッケージ

総ダウンロード容量: 398 k
インストール容量: 676 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): jasper-1.900.1-29.el7.x86_64.rpm                                   |  24 kB  00:00:00     
(2/2): jasper-devel-1.900.1-29.el7.x86_64.rpm                             | 375 kB  00:00:00     
-------------------------------------------------------------------------------------------------
合計                                                             1.5 MB/s | 398 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : jasper-1.900.1-29.el7.x86_64                                     1/2 
  インストール中          : jasper-devel-1.900.1-29.el7.x86_64                               2/2 
  検証中                  : jasper-devel-1.900.1-29.el7.x86_64                               1/2 
  検証中                  : jasper-1.900.1-29.el7.x86_64                                     2/2 

インストール:
  jasper.x86_64 0:1.900.1-29.el7               jasper-devel.x86_64 0:1.900.1-29.el7              

完了しました!

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

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

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

yum -y  install gstreamer1*

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

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

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

簡単にコマンドだけ

yum -y install proj proj-devel proj-epsg
yum -y install gdal gdal-devel

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

でどこからともなく、

# rpm -Uvh https://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# yum list | grep ffmpeg
ffmpeg.x86_64                            2.6.8-3.el7.nux              nux-dextop
ffmpeg-compat.x86_64                     0.6.7-9.el7.nux              nux-dextop
ffmpeg-compat-debuginfo.x86_64           0.6.7-9.el7.nux              nux-dextop
ffmpeg-compat-devel.x86_64               0.6.7-9.el7.nux              nux-dextop
ffmpeg-debuginfo.x86_64                  2.6.8-3.el7.nux              nux-dextop
ffmpeg-devel.x86_64                      2.6.8-3.el7.nux              nux-dextop
ffmpeg-libs.x86_64                       2.6.8-3.el7.nux              nux-dextop
ffmpeg2theora.x86_64                     0.30-1.el7.nux               nux-dextop
ffmpeg2theora-debuginfo.x86_64           0.30-1.el7.nux               nux-dextop
ffmpegthumbnailer.x86_64                 2.0.9-1.el7.nux              nux-dextop
ffmpegthumbnailer-debuginfo.x86_64       2.0.9-1.el7.nux              nux-dextop
ffmpegthumbnailer-devel.x86_64           2.0.9-1.el7.nux              nux-dextop
gstreamer-ffmpeg.x86_64                  0.10.13-15.el7.nux           nux-dextop
gstreamer-ffmpeg-debuginfo.x86_64        0.10.13-15.el7.nux           nux-dextop
mlt-ffmpeg.x86_64                        6.4.1-4.el7.nux              nux-dextop
mythffmpeg.x86_64                        0.28-4.el7.nux               nux-dextop

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

# yum install ffmpeg*
# yum install -y gstreamer-ffmpeg*

とやってみました。

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

# cmake .
-- Found GDAL: /usr/lib64/libgdal.so  
-- checking for module 'gta'
--   package 'gta' not found
-- Found GStreamer: /usr/include/gstreamer-1.0;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include (found version "1.4.5") 
-- Could NOT find SDL2 (missing:  SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing:  SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'poppler-glib'
--   package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
--   package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
--   package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
--   package 'gtkglext-x11-1.0' not found
-- Could NOT find TIFF (missing:  TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

大分減りました!

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

# yum list | grep gta
langtable.noarch                         0.0.31-3.el7                 @anaconda 
langtable-data.noarch                    0.0.31-3.el7                 @anaconda 
langtable-python.noarch                  0.0.31-3.el7                 @anaconda 
libgta.x86_64                            1.0.4-1.el7                  @epel     
liblangtag.x86_64                        0.5.4-8.el7                  @anaconda 
argtable.x86_64                          2.13-7.el7                   epel      
argtable-devel.x86_64                    2.13-7.el7                   epel      
dogtail.noarch                           0.9.0-3.el7                  epel      
libgta-devel.x86_64                      1.0.4-1.el7                  epel      
libgta-doc.noarch                        1.0.4-1.el7                  epel      
liblangtag.i686                          0.5.4-8.el7                  base      
liblangtag-devel.i686                    0.5.4-8.el7                  base      
liblangtag-devel.x86_64                  0.5.4-8.el7                  base      
liblangtag-doc.noarch                    0.5.4-8.el7                  base      
liblangtag-gobject.i686                  0.5.4-8.el7                  base      
liblangtag-gobject.x86_64                0.5.4-8.el7                  base

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

# yum -y install libgta*

ついでに再度cmakeやってみると。。。

# cmake .
-- checking for module 'gta'
--   found gta, version 1.0.4
-- Could NOT find SDL2 (missing:  SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing:  SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'poppler-glib'
--   package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
--   package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
--   package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
--   package 'gtkglext-x11-1.0' not found
-- Could NOT find TIFF (missing:  TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

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

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

# yum list | grep -i sdl 
SDL.x86_64                               1.2.15-14.el7                @anaconda 
SDL.i686                                 1.2.15-14.el7                base      
SDL-devel.i686                           1.2.15-14.el7                base      
SDL-devel.x86_64                         1.2.15-14.el7                base      
SDL-static.i686                          1.2.15-14.el7                base      
SDL-static.x86_64                        1.2.15-14.el7                base      
SDL2.x86_64                              2.0.3-9.el7                  epel      
SDL2-devel.x86_64                        2.0.3-9.el7                  epel      
SDL2_image.x86_64                        2.0.1-2.el7                  epel      
SDL2_image-devel.x86_64                  2.0.1-2.el7                  epel      
SDL2_mixer.x86_64                        2.0.1-2.el7                  epel      
SDL2_mixer-devel.x86_64                  2.0.1-2.el7                  epel      
SDL2_net.x86_64                          2.0.1-2.el7                  epel      
SDL2_net-devel.x86_64                    2.0.1-2.el7                  epel      
SDL2_ttf.x86_64                          2.0.14-2.el7                 epel      
SDL2_ttf-devel.x86_64                    2.0.14-2.el7                 epel      
SDL_Pango.x86_64                         0.1.2-21.el7                 epel      
SDL_Pango-debuginfo.x86_64               0.1.2-20.el7.nux             nux-dextop
SDL_Pango-devel.x86_64                   0.1.2-21.el7                 epel      
SDL_gfx.x86_64                           2.0.25-3.el7                 epel      
SDL_gfx-debuginfo.x86_64                 2.0.22-5.el7.nux             nux-dextop
SDL_gfx-devel.x86_64                     2.0.25-3.el7                 epel      
SDL_image.x86_64                         1.2.12-11.el7                epel      
SDL_image-debuginfo.x86_64               1.2.12-7.el7.nux             nux-dextop
SDL_image-devel.x86_64                   1.2.12-11.el7                epel      
SDL_mixer.x86_64                         1.2.12-4.el7                 epel      
SDL_mixer-devel.x86_64                   1.2.12-4.el7                 epel      
SDL_net.x86_64                           1.2.8-6.el7.nux              nux-dextop
SDL_net-debuginfo.x86_64                 1.2.8-6.el7.nux              nux-dextop
SDL_net-devel.x86_64                     1.2.8-6.el7.nux              nux-dextop
SDL_ttf.x86_64                           2.0.11-6.el7                 epel      
SDL_ttf-debuginfo.x86_64                 2.0.11-4.el7.nux             nux-dextop
SDL_ttf-devel.x86_64                     2.0.11-6.el7                 epel      
mingw32-SDL.noarch                       1.2.15-3.el7                 epel      
mingw32-SDL_image.noarch                 1.2.12-8.el7                 epel      
mingw32-SDL_mixer.noarch                 1.2.12-3.el7                 epel      
mingw64-SDL.noarch                       1.2.15-3.el7                 epel      
mingw64-SDL_image.noarch                 1.2.12-8.el7                 epel      
mingw64-SDL_mixer.noarch                 1.2.12-3.el7                 epel      
msv-xsdlib.noarch                        1:2013.5.1-7.el7             base      
perl-Alien-SDL.noarch                    1.446-1.el7.nux              nux-dextop
perl-SDL.x86_64                          2.544-5.el7.nux              nux-dextop
perl-SDL-debuginfo.x86_64                2.544-5.el7.nux              nux-dextop
perl-SOAP-WSDL.noarch                    3.003-6.el7                  epel      
perl-SOAP-WSDL-Apache.noarch             3.003-6.el7                  epel      
perl-SOAP-WSDL-examples.noarch           3.003-6.el7                  epel      
wsdl4j.noarch                            1.6.3-3.el7                  base      
wsdl4j-javadoc.noarch                    1.6.3-3.el7                  base      

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

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

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

# yum -y install SDL* SDL2*

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

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

# yum -y install poppler*
# yum -y install librsvg2*
# yum -y install gtk+*
# yum -y install gtkglext*
# yum -y install libtiff*

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

# cmake .
-- Found SDL2: /usr/lib64/libSDL2.so;-lpthread  
-- Found SDL: /usr/lib64/libSDLmain.a;/usr/lib64/libSDL.so;-lpthread (found version "1.2.15") 
-- checking for module 'poppler-glib'
--   found poppler-glib, version 0.26.5
-- Performing Test POPPLER_HAS_CAIRO
-- Performing Test POPPLER_HAS_CAIRO - Success
-- checking for module 'librsvg-2.0>=2.35'
--   found librsvg-2.0, version 2.39.0
-- checking for module 'gtk+-2.0'
--   found gtk+-2.0, version 2.24.28
-- checking for module 'gtkglext-x11-1.0'
--   found gtkglext-x11-1.0, version 1.2.0
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

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

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

# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

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

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

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

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

# yum -y intall 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(閉塞カリング)

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

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

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

 

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

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

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