2007年6月24日日曜日

続・3DCGをはじめるのにはまる


さて、3DCG関係のTIPSなどをGoogleで調べていると、3DCG関係をやったことのある人はSecondLifeでオリジナルな服を開発したりしている人が多いようです。やはり、限られた中からしか選べない洋服よりはオリジナルな服を自分のアバターに着せたいと思うのは当然で、オリジナルTシャツなんかを販売したりもできるようですし。3DCGをできる人にはSecondLifeはよりとっつきやすいでしょうね。

3DCGについて箇条書きでまとめておく
・モデリングを行う
・ボーンを埋め込み、ポーズなどをとらせる
・テクスチャを適用させる
・アニメーションする人は作成
・レンダリングして書き出す

というのが流れのようですが、全てを1つのソフトでやるのではなく、それぞれに得意なソフトを連携させてやるというのが多いようです。
つーことで、まずはソフトウェアの選択と入門書を買ってみて挫折しないようにがんばります。

Blenderは自分にはまだ難しいorz

3DCGをはじめるのにはまる

Erlangをやってみっかと思ったのも束の間、次にターゲットに目移りしてしまいました。
それは、3DCG!
なぜかというと、Second Lifeをちょろちょろ見ていたところ、自分も3DCGアバターみたいなのを作ってみたいなと。さらには、Flashで3Dを表示させるという、Papervision3Dというのを見つけたのでした。
要は、
・Webアプリとして、swfを生成してクライアントに返す。
・その中で3DCGアバターもどぎが動いている。マウスに反応してグリングリン動く!

というのをやってみたいと思ったのでした。

で、さっそくもろもろ調べてみたところ、まず、
Papervision3DはActionScript3で動く→AS3はどうやるんだ→Adobe Flex3
とたどり着き、Flex Builder(Eclipseにプラグインとして入れました)でAS3をシコシコ書いたところ
無事にサンプルの3Dぽいのがswfとして生成されました。

サンプルでは、3DのあらかじめあるシェイプをnewしてaddChildしたんですが、Papervision3Dでは、colladaという3Dの統一規格のファイルを読み込めるということが判明。さっそく、どの3Dソフトができるのかいなと調べたところ、Blenderというオープンソースな3DCG統合ソフトがありますと。

よーし、人でもつくってみっかと開いたところ、まるでわからん。プログラム関係ならどの言語でも、ははーんこうやればHello Worldだせるなぐらいは速攻でわかるんですが、3DCGソフトはさっぱりわからん。右クリックで選択って逆じゃねーのみたいな。

というわけで一から3DCGソフトを勉強しようと調べはじめたところ、ピンきりでいろいろあるんですな。昔聞いたことのある、ShadeやLightWaveから六角大王などなど。で、人体を手っ取り早く作るのはPoserというのがドンピシャ!SLのアバターのポリゴンが配布されていて、これでSL内の自分のアバターに着せるオリジナルな服を開発できちゃったりするようです。
さらに調べると、このPoserとの互換性のあるソフトが無料で配布されている!その名もDaz|Studio。さっそくインストール。見事、付属しているフィギュアを表示させ、レンダリングできました。が、どうもリアルすぎるwテカテカ光っていて、肌もなめらか。もうちょっとゴツゴツしたのでいいんだが。

と、わけわからん文章になったが、まとめると

swf関係
・Papervision3D 神
・Flex 3 神
・ActionScript3を勉強すべし!

3DCG関係
・モデリングやらテクスチャやらレンダリングやらをまず勉強すべし
・フリーなものから高価なものまでソフトがあるので、まずどれかで特訓すべし。
・人体はPoserがリアルすぎるw。
・Poser向けにSLのポリゴンメッシュが配布されている。
・collada形式で吐き出すのはBleder(オープンソース)が可能。

2007年6月19日火曜日

Yaws (Erlang HTTP Server)を入れてみる

Erlangという言語を知りました。
なんでもエリクソンで電話交換機用のプログラムとしてはるか昔からあったようです。
それが1998年にオープンソースとして公開されたものらしいです。

Yawsとは、このErlangで書かれた超高速なHTTP1.1のサーバです。
Yet Another Web Server の略だそうです。

さっそく入れてみました。といってもDebianのパッケージがあるので
インストール自体は簡単です。

sudo apt-get install yaws

インストール後、デフォルトではPort:8080で起動されるようなので
(既にApacheで8080があがってたりしたらずっこけるかも)
ブラウザで、http://colinux:8080/
とやって、「If you can see this, it means that the installation of the Yaws web server software on this system was successful.…」なページがでれば
ばっちり完了。

関数型言語というのは正直触ったことがないので、これを機会にやってみます。

http://yaws.hyber.org/

Web開発でそんなテレコム言語がなんの役に立つんだ?あ?という方は
twitterブームの陰で注目を集める“Erlang”@IT
をご参照ください。

2007年5月20日日曜日

Writing Apache2 Module in C/C++ その2

apxs2により、まずモジュールの雛形を作成します。
今回はモジュール名をcgiwebapp とします。

cd dev/apache2
apxs2 -g -n cgiwebapp
Creating [DIR] cgiwebapp
Creating [FILE] cgiwebapp/Makefile
Creating [FILE] cgiwebapp/modules.mk
Creating [FILE] cgiwebapp/mod_cgiwebapp.c
Creating [FILE] cgiwebapp/.deps

という具合に雛形が作成されます。このままでもコンパイルは通るので、
Makefileの、top_srcdirを、
top_srcdir=/usr/share/apache2
としておきます。
(make install時のbuildスクリプトのため)
apxsもapxs2にしておきます。

make
sudo make install

とやると、mod_cgiwebapp.so が/usr/lib/apache2/modulesにコピーされます。

/etc/apache2/apache2.confに
LoadModule cgiwebapp_module /usr/lib/apache2/modules/mod_cgiwebapp.so
を追加し、
/etc/apache2/site-avaliable/defaultの<virtualhost>内に、
<location>
SetHandler cgiwebapp
</location>

と書きます。

その後、apache2をリスタートし、
http://colinux/cgiwebapp
とやると、
The sample page from mod_cgiwebapp.c
が表示されて、ひとまず動作確認完了

Writing Apache2 Module in C/C++ その1

Apache2のモジュールを開発します

なぜかというと、以前apache1.3系のモジュールを作ったので、それを
apache2に書きなおしたいというわけです。
そのモジュール自体はかなり機能豊富でしたが、まずは通常のCGI-Webアプリとして
使い物になる程度まで仕上げたいと思います。

メモを残しつつ、多少時間がかかると思いますが完成させたいと思います。

というわけでまずは開発環境。
colinux上に、apache2、apache2-mpm-prefork、apache2-prefork-devをインストールします。threadモデルでやりたいところですが、モジュールをスレッドセーフにかける自信がないので、preforkで開発します。

sudo apt-get install apache2-mpm-prefork
sudo apt-get install apache2
sudo apt-get install apache2-prefork-dev

モジュールのルートディレクトリを作成。今回は
~/dev/apache2/
とします。

mkdir dev/apache2/

続く

2007年5月19日土曜日

colinuxによる開発環境の構築

仕事とは別に
自分の好き勝手にできる開発環境が欲しかったのでcolinuxをwindows xp上に構築してみました。

実行速度は申し分ないです。
Debianを入れましたが、他のディストリビューションでもインストール可能のようです。
インストール方法などは

http://aoineko.ciao.jp/text/colinux/colinux.html
http://www.si-linux.co.jp/wiki/silinux/index.php?CoLinux

を参考にさせていただきました。

付属でダウンロードしたDebianのディスクイメージだと1GBとさすがに少ないので
自分の環境では4GBに変更してあります。

仕事のサーバがDebianなので、Debianの勉強などにはもってこいですね。
クリーンインストールした状態のデータをバックアップしておくと、
ぶっ壊してもいつでも復活できます。このあたりがすばらしい!

2007年5月17日木曜日

Apache2のmoduleのon/off

DebianでのApache2のmoduleのon/off

パッケージから入れた場合、
/usr/sbin/a2enmod
/usr/sbin/a2dismod
を使用する

mod_rewriteを例にとると
onにする場合:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

offにする場合:
sudo a2dismod rewrite
sudo /etc/init.d/apache2 force-reload

ソースから入れた場合、あるいはモジュールだけソースからコンパイルした場合は
例によって、
LoadModule php5_module modules/libphp5.so
のようです。
Debianでモジュールを入れる場合はパッケージでそろえた方が管理が楽でいいですね。

ApacheのRewriteMap

Apacheのmod_rewriteのRewriteMapについてのメモ

今回は
http://q.hoge.com/ を http://www.hoge.com/sub/123/
にrewriteする。
単純なテキストファイルを用意
/home/qootaro/rewritemap/map.txt

形式はキー<スペース>値
なので
q.hoge.com 123
として保存

rewriteの設定は以下のとおり

RewriteEngine on
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 9
RewriteMap submap txt:/home/qootaro/rewritemap/map.txt
RewriteCond %{HTTP_HOST} q.hoge.com
RewriteRule /(.*) http://www.hoge.com/sub/${submap:%{HTTP_HOST}}/ [L]

もちろん、これはサブドメイントップ以下のページを全部同じ
URLにrewriteしてしまうので、本来は通常のIDが含まれたURLだけど、特定のIDのページだけサブドメインに割り当てたい というような時に使用できると思います。
(それ以外は実用性ゼロw)

Web開発のメモ

今までちゃんとまとめた事がなかったので
このブログで調べたことなどをまとめます