Windows 10 で、Gaffer  by Image Engine (Linux ビルド）をお手軽に動かす。

Image Engine 社の Gaffer を Bash on Ubuntu on Windows を使って、Linux ビルドをそのまま動かす方法を紹介します。（Computer Science や VFX 関連は Linux ですよ～）

Gaffer の紹介や使い方は、下記を参照してください。
http://www.gafferhq.org/
https://github.com/GafferHQ/gaffer/wiki
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/95ae17fb-889c-10ce-b16e-626c36b1d262.png)

# はじめに
今回の方法は、Linux ベースのソフトウェアをお手軽に試すという趣旨です。
試した結果、本格的に導入する場合は、Windows ビルド対応を進めることをお勧めします、
Windows サポートが無いオープンソースソフトウェア(OSS)の ビルドは手間がかかるので、それを素早く解決する方法の一つとして認識して頂ければ幸いです。

# 対象の読者
* 育ちは、Windows だけど、Linux / UNIX の世界に挑戦したい人
* 自社の開発環境や制作ワークフローが、Windows 環境で構築されており、Linux ベースのソフトウェアやレンダラをお手軽に試してみたい方

# 動作確認環境
Dell XPS 15(9550), http://www.dell.com/jp/p/xps-15-9550-laptop/pd
Windows 10 Home 64bit
Gaffer for Linux Release 0.30.0.0

# 制約
## 1. ファイルシステムは非対称
Linux ファイルシステムから、Windows ファイルシステムは、操作できません。
Windows ファイルシステムから、Linux ファイルシステムは操作できます。
## 2. 描画は、X Server 経由のため、多少動作が重くなります。
X Server なので、リモートのディスプレイにも表示できます。

# 準備
Bash on Ubuntu on Windows で、GUI を使うソフトウェアを実行するための手順です。

## Step 1. Bash on Ubuntu on Windows の導入
開発者モードにして、Bash on Ubuntu on Windows をインストールします。
具体的な方法は、下記の記事を参考にしてください。

1. Bash on Ubuntu on Windowsをインストールしてみよう！
http://qiita.com/Aruneko/items/c79810b0b015bebf30bb

2. Windows 10でUbuntuのシェル「Bash」が動き始める！
http://www.atmarkit.co.jp/ait/articles/1604/11/news031.html

**留意点：Linux のファイルシステムは、Windows ユーザフォルダ配下の下記に作られます。**
%userprofile%\AppData\Local\Lxss\rootfs

## Step 2. Xming X Server for Windows の導入
Linux のGUI を使えるようにするため、Xming X Server をインストールします。
https://sourceforge.net/projects/xming/
Download ボタンをクリックして、セットアップファイル（Xming-6-9-0-31-setup.exe）を入手します。
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/37174be3-039b-25c8-7157-1109ef6f1143.png)

# Bash on Ubuntu on Windows の起動
Linux 用のソフトウェアを利用するために、Bash を起動します。
**以降の手順は、Bash での操作となります。**
Windows スタートメニュー > Bash on Ubuntu on Windows
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/f280c13f-de7e-3330-d6ec-ba2a8ba9d917.png)

# X Server の動作に必要なライブラリをインストール
下記コマンドを実行して、X Server の動作に必要なライブラリをインストールします。
`sudo apt-get install x11-apps`

参考文献：Bash on Ubuntu on WindowsでTensorFlowを使うためのメモ
http://qiita.com/toyolab/items/bccd03d4cb7795112ab6

# X Server の出力先ディスプレイ環境変数 DISPLAY を追加
Bash の設定ファイル .bashrc に X Server の出力先環境変数をローカルホストに設定して追加します。
下記コマンドを入力します。
`echo 'export DISPLAY=:0.0' >> ~/.bashrc`
~/ は、ホームディレクトリを示します。

DISPLAY 設定の確認
下記コマンドを入力します。
`xeyes&`
目玉のウインドウが表示されれば成功です。
設定されていない場合、
`Error: Can't open display:`
と表示されます。
エラーの場合、bash の設定を再読み込みしてください。
`source ~/.bashrc`
その後、DISPLAY に:0.0が設定されているかどうか確認してください。
`echo $DISPLAY`
の結果として、
`:0.0`
が出力されていれば、設定完了です。

# OpenGL (GLUT) のインストール
Gaffer の描画は、OpenGL を使います。
`sudo apt-get install freeglut3`
`sudo apt-get install freeglut3-dev`

参考文献：OpenGL (GLUT) で正方形が動くだけのアニメーション
http://qiita.com/yubais/items/c976c2ecdf5fa71bd473

# Gaffer を動かす
## Step 1. Gaffer Release バイナリの入手
Gaffer 実行ファイルを含むリリースバイナリを GitHub から入手します。
https://github.com/GafferHQ/gaffer/releases
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/d9241174-78e9-f2b2-d0f5-0ff9d9a6b12a.png)

## Step 2. Gaffer 0.30.0.0 （最新版）をダウンロード
Bash は、初期状態では、GUI を持つブラウザがありません。wget コマンドで入手します。
`wget https://github.com/GafferHQ/gaffer/releases/download/0.30.0.0/gaffer-0.30.0.0-linux.tar.gz`

![image](https://qiita-image-store.s3.amazonaws.com/0/149173/543a622a-163a-20cb-25a2-f6cbf9198b15.png)

## Step 3. ダウンロードしたファイルを展開
`tar xvf gaffer-0.30.0.0-linux.tar.gz`
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/65e84a4b-9d29-0033-7352-7144c8af53c8.png)

## Step 4. Gaffer の実行ファイルがある場所に移動
展開したディレクトリ配下のbin ディレクトリに移動します。
`cd gaffer-0.30.0.0-linux/bin/`
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/1adff647-e537-81ff-0b6d-53b34047cade.png)

## Step 5. Gaffer の起動
`./gaffer&`
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/4258d801-244a-8224-269b-a28b91bcbae7.png)

& は、バックグラウンドプロセスで動かすオプションです。
このオプションを省略した場合、Gaffer 起動中は、Bash が操作できません。
Gaffer が、フォアグラウンドプロセスになっているためです。
ps コマンドでプロセスが動いているかどうか確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/95ae17fb-889c-10ce-b16e-626c36b1d262.png)

# おわりに
次回は、
Gaffer の使い方を紹介します。
Bash で、Linux 向けのHoudini を動かしてみます。 
Bash で、USD / Hydra を動かしてみます。
Gaffer の Windows Native ビルドに挑戦します。

# 次回予告
Gaffer 上で、モデルの照明と陰影を紹介する予定です。
画像は、原理的な物理ベースマテリアル、Disney BRDF をインタラクティブにプレビューしています。
ここまで読んでくださった、読者のみなさま、今後とも、よろしくお願いします。
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/d8fef994-0e9c-d1c2-42fe-a3bf71228a65.png)

# おまけ
wget ではなく、Web ブラウザを使いたい方向けの補足です。
# Step 1. Linux 用の Web ブラウザをインストール
Bash on Ubuntu on Windows は、初期状態では、GUI を持つWebブラウザがありません。
今回は、Firefox をインストールします。
`sudo apt-get install firefox`
![image](https://qiita-image-store.s3.amazonaws.com/0/149173/aa5dee51-e743-8008-3d18-ee776ddf08cf.png)

# Step 2. Firefox の起動
`firefox&`