キャラ03 - modoモデリング - 01

image656l

載せるのも気が引ける画像です。

Unityで使う用のモデルを作成しはじめました。

7、8千ポリゴンくらいで作れれば良いかな?と思っております。

 

久しぶりのポリゴンモデリングです。

仕事でやるのと、家でやるのではスピードが違うことが実感できます。

仕事だと納期の方が重要なので、それに合わせて、それなりのものになります。

家だとゲーム感覚でモデリングしています。

ただ、どちらが良いモデルが出来る。というものではないようです。

両方やって初めて進歩しつつ、スピードアップが出来るように思います。

 

Unityの方は、しばらく間を開けたら、どこまでやったか思い出すのに時間がかかりました。

地道に進めてゆきます。自作モデルを動かす日は相当遠そうです。

 

そういえば、ZBrush、保留にしました。

今買ってもすぐには使いそうもありません。自分が欲しい機能も少ないようなので。

3Dcoatに興味が湧きますが、これも今は必要ないので買いません。

しばらくmodoとModtoolとUnityで遊んでいようかと思います。

言ったそばから気が変わるかもしれませんが。

 

Unity3.0がそろそろ出るという話ですが、いつごろになるのでしょうか?

機能が沢山増えるそうですが、無料版では使えない機能もたくさんあるそうです。

円高を利用すると9万円くらいで買えるそうですが、そこまでは手が出ません。

まぁ、まずはデータを表示してみて、使い勝手を見ないとなんとも言えませんね。

雑記12 - 「光と物質のふしぎな理論」

本の紹介です。

 

物理学者、リチャード・ファインマンの書いた本です。

光子の振る舞いに付いて、理解が深まります。

 

古典力学では、光は出力装置から計測器までの最短距離を求めることで、経路を求めることが出来る。

という考えですが、量子電磁気学では、全ての経路を想定し、それらを足すことで経路を求める。

と、言うことかと思います。

 

それにより、古典力学よりも正確な近似値が得られる。

微分し、積分せよ。とはこの事なのでしょうか?

一見方法を複雑にしているだけのように思いますが、

古典力学では説明のできない、回折格子の説明が出来ることになります。

 

屈折も同じような理屈で、光は水の中では、遅くなる。

ということを前提に、水中の目的地に最短でたどり着くには、

目的地への直線距離ではなく、目的地から水面の最短距離と、直線距離との中ほどを通るのが最も速い。

ということになる。と、説明されております。図がないと分かりづらいですね。

 

自然現象の振る舞いは、一言でいうと「易きに付く」です。

人間においては、良くない事として使われます。

簡単な方を選ぶから、うまくいかないんだよ。と、

どうも矛盾しています。

 

自然界において、なぜ人間だけが努力することを求めるのでしょうか?

しかし、求めるということは、それが無い、とも言い換えることができます。

人それぞれ色々あり、量子電磁気学のように、その一つ一つを小さいベクトルとし、

全てを足すと、民族全体、人類全体のベクトルが近似で求まるのでしょうか?

そもそも、性質がちがうものか?言語が入ってくるので、解釈の違いでベクトルも求められそうにもありません。

 

ここまで来て疑問が出てきました。

そもそも光は目的地を想定して屈折しているのではないだろう?

うーん、読んで少したったから内容を忘れている部分があります。

ただ、ファインマンは光子が経路を検索しているとしか思えない、とも書いていました。

そして、これらの講義に、なぜそうなる?、という言葉は禁句だ、とも書いておりました。

自然がなぜそのように振舞うのかはわからない。それらの現象を分析することしかできない。

 

この本は、元々ファインマンが友人の奥さんにせがまれ、あなたのやっていることを専門知識が無い私に説明してくれ。

という注文に応えるために、行った講演をまとめた本です。

残念なことに講演する前にその方は亡くなられたそうですが。

 

なので、本としては、物理、数学の知識が無くても理解ができます。

ただ、狐につままれたような感じにもなるかも知れません。自分はそうなりました。

しかし、面白い。おすすめです。

Unity3D- 3

image655l

遅々として進まず。

配置オブジェクト、画面周り、スタートとゲームオーバーまで作りました。

殆ど素材を探して設定するだけです。

 

アニメーションの出力を試していました。

エクスプレッションのプロットがうまくゆかなく、試行錯誤しておりましたが、

全てのアニメーションではなく、骨に回転のみをプロットすることで問題解決できました。

腰の位置だけはトランスもプロットしましたが。

 

fbxでもcolladaでも出力はできたのですが、Unity上でのアニメーションの登録がまだ分かりません。

Modtoolでそれらのファイルを開くと、破綻しているのが気になりますが、、

 

記事を書きながら、再びxsiのシーンを見てみると、プロットに失敗しておりました。

エクスプレッションを複雑に絡ませすぎたようです。

 

やっぱりデフォルトのリグを使うしか無いかなぁ、、

Unity3D – 2 – Toolbag – Cryengine

image654l

ちょっと躓きました。

微妙に分からないことが出てきます。

一応形にはなっているのですが、本来の物とは違うのかも知れません。

チュートリアル、ちょっと分かりづらいところもあります。

しかし、訳していただかなければ、ここまでも進めないことを考えると、感謝の限りです。

 

ゲームライブラリを触ったことがないとさらに難しいかも知れません。

 

キャラの影は俗に言う、丸影、という物を良く使っておりました。

最近ではハードのスペックも上がり、セルフシャドウすらも出来る時代です。

このチュートリアルで使う影も丸影なのですが、自分の知っているものとは別物でした。

キャラクタの足元に水平にポリゴンを生成し、ボケた黒い丸を置くのが自分の知っているものでしたが、

ここではマイナスのライトをキャラクタの上に配置する、と言った感じのものです。

 

地面に高低差があっても大丈夫です。

それを知ってびっくりしました。

同じ丸影でも色々あるのねぇ、と言った感じです。

 

近々出る、Unity3ではパーティクルエミッターの回転(これはむしろできなかったことが驚きですが)、

ライトマップの生成、その他もろもろすごいことができるそうです。

ライトマップはCGツールで作ったほうが調整もしやすく、便利であるように思うのですが、どうなのでしょうか?

 

ビューアとしては、Toolbagという強力なものには及びません。

リアルタイムのビューアなのにイメージベースドライティングに対応いています。すごいです。

 

しかし、総合のゲームエンジンとしては今のところ最強なのではないでしょうか?

psp、ps3、xbox、wii、pcブラウザ、iPhoneに対応しながら、ここまでの表現が出来き、

なおかつ一番高くても30万円、位だそうです。

アンリアルエンジンであれば、数千万円なのでしょうか?

 

その他、表現力という部分では、Cryengineというものがあります。

こちらも個人では手が届かないシロモノだと思います。

お試し版を触ったことがありますが、地面に描かれた道路がベジェで表現されており、

それをいじると、地面の凹凸に沿って、ベジェが動き、そのベジェに合わせて道路が曲がります。

今までの苦労はなんだったのだろう?と呆然とさせられる瞬間ですが、新時代の到来です。

 

早く自分で作りたい。

大分先の話のようです。

Unity3D – 1

image653l

Unity、ついに触り始めました。

付属のチュートリアルをやっております。

日本語化してくれた方に感謝です。

 

チュートリアルは、物が全て用意されていて、それを適用、調整するだけです。

キャラのコリジョンを確認しながら調整できるというだけで、感激です。

 

3Dデータはfbxが読み込めます。Modtoolで作ったものを試しに読み込んでみましたが、

アニメーションは無視されました。もう少し研究が必要です。

 

無料版でも商用利用が可能だそうです。

いくつかの制限と、スタート時にロゴが入るということだけのようです。

最低価格が11万と、ちょっと高いです。

 

しかし、これだけの機能が揃っているとは驚きです。

プログラマブルシェーダも使えるそうなので、mentalmillとの併用も試してみようかと思います。

 

うーん、久しぶりにリグをいじったら、すっかり忘れています。同じようなことを以前書いたように思います。

いっそうのことxsi標準のリグで無難にモーションを付けたほうが良いかも知れません。

 

しかし、チュートリアルのデータ、いい加減なモーションです。あまり人の事を言える立場ではありませんが。

こんなので、こうなるの?という、ツールとしては良い意味で、データとしては悪い意味で思ってしまいます。

 

以前本家のリンクを張り忘れたかと思いますので、張っておきます。

UNITY

興味のある方は是非。恐らくアンリアルエンジンよりも良いのではないかと思います。

近況

image652l

休みに入る前に作ったものです。

気晴らしに、何を作ろうかなぁ、と漠然と作りました。良く分かりません。

 

ZBrush4、会社で試しました。

楽しみだったGoZ、modoでポリゴンを押し出したり、エッジを追加したものを、

ZBrushでサブディビジョンを保ったままにして、持って行くと崩れます。

これはバグなのでしょうか仕様でしょうか?

 

バグにしても恐らく完璧に直ることはなさそうです。

どうもGoZが発表された当時のムービーを見ると、サブディビジョンレベルを1にして

他のツールと行き来しているので、仕様のようです。

ムービーだけ見ると、かなりビビリますが、実際やってみると、まぁそうだろうね。

という感じです。

 

無いと欲しくなりますが、いじると萎える魔性のツールです。

根を据えて付き合わないと、自分には使いこなせそうもありません。

円高もあり、9月の値上がりもあるので、ここは思い切って買っておいて、

意地でも使い倒したほうがよさそうな気もします。まだ迷っています。

 

そして、次に何を記事にしてゆこうかも迷っております。

どうも、個人的にはゲームモデリングが気になっております。

本職ではあるのですが、現在の仕事上そういったものをしていないので、

ゴリゴリのゲームモデリングを久しぶりにやりたくなってきました。

というか、テクスチャが描きたいです。

 

デザインをどうしようか、と考えると気が萎えてきます。

もう少し考えてみます。

 

話は変わりますが、子供に教わることは色々ある、とよく言われますが、

実際にそうであることが、子供といると良く分かります。

 

先日、自転車に乗った子供と歩いていると、先に進んだ子どもが、

「お父さん、小さい!」と勝ち誇ったように言いました。

心の中で、お前の方が小さいよ。と、思いましたが、この時に相対性理論を思い出しました。

 

相対性理論は一般的に理解しがたい理論だと言われております。

自分も詳しくは分かっておりません。

しかし、理解を諦めたときに理解できるようになる、不思議な理論だ、という人もいます。

 

早く動くもの同士が、すれ違いざまにお互いの時計を見ると、自分の時計よりも相手の時計が遅れている事にお互いが気がつく。

簡単に言ってしまうと、これが相対性理論です。

自分のような人間からすると、そんなに正確に時計を見ることはできないだろう。

と思ってしまいますが、これはあくまでも実験結果を身近なものに置き換えて言っているだけで、

言葉のままの事をしたわけではありません。

 

そして、こちらから見ると向こうが小さく、向こうから見るとこちらが小さい。

当たり前の話ですが、なぜ空間は人間に対してそのような認識を持たせるのか?

または、人間はなぜ空間をそのように認識するのか?

パースなどを持ち出し、計算することは可能ですが、理由は答えられません。

 

そして、それが当然だという認識にたつ我々からすれば、遠くに行けば小さくなる事は不自然に感じませんが、

速くなることで、時間が変化することに不自然を感じます。

 

端的に言うと、大きさの問題であり、認識の問題です。

ちなみに大きさの問題といえば、ファインマンは面白いことを言っていました。

アインシュタインの式にはcという定数が頻繁に登場します。これは光速を表すもので、

約毎秒30万キロという、ほぼ一定の値を示すものです。

しかし、これを秒で測ってしまったからcがたくさん必要になった。これはアインシュタインの間違いだ。

と冗談めかしく言っていました。

 

どうも最近CGの話から外れがちです。

Googleの広告はそれを顕著に表します。悔しいような、もどかしいような。

どちらにせよ、嬉しいことではありません。

 

広告といえば、イーフロンティアの広告を追加しました。

こんなページにわざわざお願いしてきてくださいました。

modoが日本の販売店より安く買えます。からくりは分かりません。

必要なものがあったら、自分もここから買って良いのでしょうか?

 

話が飛び散らかりました。ZBrush4、悩むなぁ、、

フォトショップスクリプト8 - PSDとTGAとDDSを同時保存

Zbrush4出ましたね。

5万2千円、、うーん。

GoZがあればmodoとの連携もバッチリで、マルチUV、マルチマップに対応。

うーん、、そそられてしまいます。

 

Bodypaintのように一度に複数の効果画像に描かせてもらえるのでしょうか?

ペイントレイヤーはどれ程の事ができるのでしょうか?

過大な期待はいけませんが、それでなくても十分に魅力的です。

 

せめてビューの操作だけでもカスタマイズさせてもらえると、連携時に操作もスムーズに出来るのですが、、

できれば、マスクやハイドの使い方も、出来ればインターフェイスも、欲が出ます。

 

次の給料日には買うかなぁ、

 

話は変わって、久しぶりのフォトショップスクリプトです。

以前紹介したPSDとTGAを保存するものを改良しました。

DirectXでの圧縮でよく使われるDDSも保存します。

しかも、レイヤーセットにそれぞれの効果、ここではアンビエント、スペキュラ、ラフネス、ノーマル、ディフューズ、

を別のレイヤーセットにしておけば、それらを別々に出力します。

TGAとDDSのファイルの末尾にはそれぞれ、Amb、Spc、Rou、Nor、Difと付けてくれます。

 

こういった地味な作業が効率化されると、クオリティーアップに時間を割けます。

われながら現場主義的なスクリプトだ。と思いますので、ぜひご活用ください。

ファイル形式をdds以外のものにする場合は、「ScriptListener.8li」を使ってコマンドを引き出してください。

ちなみに今回保存されるddsは非圧縮のものになります、それも変更する場合はコマンドを引き出して、貼りつけてください。

 

ソースは素人っぽさ満載です。

動けば良いじゃないか、という考えです。恥ずかしくはありますが、まぁ、良いです。

コメントも書いてみました。参考になれば幸いです。間違いには責任を持ちません。

もちろん、スクリプトにも責任は持ちませんが、動作確認済みです。

責任は持ちませんが、ご自由に改ざん、配布してください。

 

SavePsdTgaDds

/////////////////////////////////////////////////////////////////////////////////////////
//
//このスクリプトはレイヤーを分けて、アンビエント、スペキュラなどの
//マップを作成したpsdデータを保存する際に、tga、dssなどの画像を
//違うディレクトリにマップ別に保存するものです。
//
//MayaやXSIのデータベースの構造を想定してつくっています。
//・トップディレクトリ
// ├「export」フォルダ※フォルダ名が違う場合は61行目を変更してください。
// └「Pictures」フォルダ※このフォルダの名前は何でも構いません。
//  └「psd」フォルダ※ここも名前は関係ありません。
//
//初めに「psd」フォルダにpsdデータを保存します。
//フォトショップでそのpsdデータを開き、スクリプトを実行すると
//「export」フォルダに非圧縮のddsを保存します。
//
//圧縮形式のものが欲しければ、「ScriptListener.8li」
//をプラグインディレクトリに入れ、デスクトップに生成される「ScriptingListenerJS.log」
//から必要な箇所を切り取り、208行から404行の部分を変えてください。
//ただし、403行の「new File( upString2 )」は変えないでください。
//
//生成されるddsファイルは、ファイル名の末尾に「Amb」「Spc」「Nor」「Rou」「Dif」
//が付けられ保存されます。
//その際に元のpsdデータに上記のレイヤーフォルダがあれば、それらを可視化して保存します。
//
//一つでもレイヤーフォルダが存在しない場合は、
//開いている状態のドキュメントを名前だけ変えて保存します。
//「Pictures」フォルダにtgaを保存します。
//「psd」フォルダにpsdデータを保存します。
//
//使い勝手のいいように勝手に変えてください。
//
//研究員A
//
/////////////////////////////////////////////////////////////////////////////////////////

//ドキュメントが開かれている時に動作するようにします。
if (app.documents.length != 0)
{
//開いているドキュメントをdocRefに格納します。
	var docRef = app.activeDocument;
//docRefのパスを調べ、「upString」に入れます。
	var upString = new String( docRef.path );
//ひとつ上のパスにするため、文字の終りから数えて「/」があるところまでを切り取ります。
//「Pictures」などの画像フォルダの下に「psd」などのフォルダを作らない場合は、
//この行を削除してください。
	upString = upString.substring( 0, upString.lastIndexOf("/") );

//関数を呼び出します。
	SpritString();

//文字を切るために作った、「SpritString」関数です。
	function SpritString()
	{
//dds保存のためにさらに「/」のところまで切ります。「upString2」がddsの保存先になります。
		upString2 = upString.substring( 0, upString.lastIndexOf("/") );
//「upString1」に「/」と開いているドキュメントの名前をくっつけます。
		upString1 = upString.concat( "/" + docRef.name );
//「upString2」に「/export/」と開いているドキュメントの名前をくっつけます。
//フォルダ名が違う場合はここの「export」を変えてください。
		upString2 = upString2.concat( "/export/" + docRef.name );
//最後の4文字「.psd」を削除します。
		upString1 = upString1.slice(0,-4);
		upString2 = upString2.slice(0,-4);
	}

//レイヤーセット、「Amb」「Nor」「Spc」「Rou」「Dif」があるか探します。
//レイヤーセットの追加と削除をする必要があれば、ここを変更してください。
//ここでの変数名「Amb」などは他で使わないので、適当に変えてください。
	layObj = activeDocument.layerSets;
	flag = true;
	try{
	Amb = layObj["Amb"];
	Nor = layObj["Nor"];
	Spc = layObj["Spc"];
	Rou = layObj["Rou"];
	dif = layObj["Dif"];
	}
	catch(e){
	flag = false;
	}
//レイヤーセットが全て存在するときの処理。
//上で変更したものがあれば、こちらも変更してください。
//変数名「lsAmb」などは適当ですので、好きな名前に変えてください。
//ただし、他で使われているので、すべて置換する必要があります。
//他とかぶらない名前にする必要があります。
	if (flag)
	{
		lsAmb = activeDocument.layerSets["Amb"];
		lsSpc = activeDocument.layerSets["Spc"];
		lsNor = activeDocument.layerSets["Nor"];
		lsRou = activeDocument.layerSets["Rou"];
		lsDif = activeDocument.layerSets["Dif"];

//フォルダの表示状態、保存する際に付け足す名前を決めます。
//必要に応じ、変更してください。
//まずはアンビエントから。
		lsAmb.visible = true;
		lsSpc.visible = false;
		lsNor.visible = false;
		lsRou.visible = false;
		lsDif.visible = false;
		upString1 = upString1+"Amb";
		upString2 = upString2+"Amb";
//24ビットで保存する関数を呼び出します。
		Save24();

//スペキュラ
		lsAmb.visible = false;
		lsSpc.visible = true;
		lsNor.visible = false;
		lsRou.visible = false;
		lsDif.visible = false;
		SpritString();
		upString1 = upString1+"Spc";
		upString2 = upString2+"Spc";
		Save24();

//ノーマルマップ
		lsAmb.visible = false;
		lsSpc.visible = false;
		lsNor.visible = true;
		lsRou.visible = false;
		lsDif.visible = false;
		SpritString()
		upString1 = upString1+"Nor";
		upString2 = upString2+"Nor";
		Save24();

//ラフネスマップ
		lsAmb.visible = false;
		lsSpc.visible = false;
		lsNor.visible = false;
		lsRou.visible = true;
		lsDif.visible = false;
		SpritString();
		upString1 = upString1+"Rou";
		upString2 = upString2+"Rou";
		Save24();
		docRef.save();

//ディフーズマップ
		lsAmb.visible = false;
		lsSpc.visible = false;
		lsNor.visible = false;
		lsRou.visible = false;
		lsDif.visible = true;
		SpritString();
		upString1 = upString1+"Dif";
		upString2 = upString2+"Dif";
		Save24();
		docRef.save();

//ここからの処理は、一つでもレイヤーセットが存在しない時の処理です。
//現在の表示状態をそのままで、名前を変えて保存します。
	}else{
		upString1 = upString1+"Amb";
		upString2 = upString2+"Amb";
		Save24();
		
		SpritString();
		upString1 = upString1+"Spc";
		upString2 = upString2+"Spc";
		Save24();

		SpritString()
		upString1 = upString1+"Nor";
		upString2 = upString2+"Nor";
		Save24();

		SpritString();
		upString1 = upString1+"Rou";
		upString2 = upString2+"Rou";
		Save24();
		docRef.save();

		SpritString();
		upString1 = upString1+"Dif";
		upString2 = upString2+"Dif";
		Save24();
		docRef.save();
	}

//ここにコメントアウトしてあるものは、アルファチャンネルが存在する場合に
//32ビットで保存するものです。「Save24()」の部分を下記のもので置き換えると
//使えるようになります。
//
//		if(activeDocument.channels.length == 3)
//		{
//			Save24();
//		}
//		else
//		{
//			Save32();
//		}



//24ビットの保存関数
	function Save24()
	{
		targaSaveOptions = new TargaSaveOptions();
		targaSaveOptions.alphaChannels = true;
		upString1 = new File( upString1 );
		targaSaveOptions.resolution = TargaBitsPerPixels.TWENTYFOUR;
		targaSaveOptions.rleCompression = false;
		docRef.saveAs( upString1, targaSaveOptions, true, Extension.LOWERCASE );
		var id3 = charIDToTypeID( "save" );
		var desc2 = new ActionDescriptor();
		var id4 = charIDToTypeID( "As  " );
		var desc3 = new ActionDescriptor();
		var id5 = charIDToTypeID( "barF" );
		desc3.putBoolean( id5, true );
		var id6 = charIDToTypeID( "fdev" );
		desc3.putDouble( id6, 3.000000 );
		var id7 = charIDToTypeID( "fbia" );
		desc3.putDouble( id7, 0.000000 );
		var id8 = charIDToTypeID( "urad" );
		desc3.putDouble( id8, 5.000000 );
		var id9 = charIDToTypeID( "uamo" );
		desc3.putDouble( id9, 0.500000 );
		var id10 = charIDToTypeID( "uthr" );
		desc3.putDouble( id10, 0.000000 );
		var id11 = charIDToTypeID( "xstf" );
		desc3.putDouble( id11, 1.000000 );
		var id12 = charIDToTypeID( "xthf" );
		desc3.putDouble( id12, 1.000000 );
		var id13 = charIDToTypeID( "qual" );
		desc3.putInteger( id13, 71 );
		var id14 = charIDToTypeID( "erdi" );
		desc3.putBoolean( id14, false );
		var id15 = charIDToTypeID( "erdw" );
		desc3.putInteger( id15, 1 );
		var id16 = charIDToTypeID( "usfa" );
		desc3.putBoolean( id16, false );
		var id17 = charIDToTypeID( "txfm" );
		desc3.putInteger( id17, 8 );
		var id18 = charIDToTypeID( "weig" );
		desc3.putInteger( id18, 0 );
		var id19 = charIDToTypeID( "tmty" );
		desc3.putInteger( id19, 0 );
		var id20 = charIDToTypeID( "mmty" );
		desc3.putInteger( id20, 32 );
		var id21 = charIDToTypeID( "smip" );
		desc3.putInteger( id21, 0 );
		var id22 = charIDToTypeID( "bina" );
		desc3.putBoolean( id22, false );
		var id23 = charIDToTypeID( "prem" );
		desc3.putBoolean( id23, false );
		var id24 = charIDToTypeID( "film" );
		desc3.putBoolean( id24, false );
		var id25 = charIDToTypeID( "alpb" );
		desc3.putBoolean( id25, false );
		var id26 = charIDToTypeID( "bord" );
		desc3.putBoolean( id26, false );
		var id27 = charIDToTypeID( "brdr" );
		desc3.putDouble( id27, 0.000000 );
		var id28 = charIDToTypeID( "brdg" );
		desc3.putDouble( id28, 0.000000 );
		var id29 = charIDToTypeID( "brdb" );
		desc3.putDouble( id29, 0.000000 );
		var id30 = charIDToTypeID( "mmft" );
		desc3.putInteger( id30, 2 );
		var id31 = charIDToTypeID( "fdcl" );
		desc3.putBoolean( id31, false );
		var id32 = charIDToTypeID( "fdaf" );
		desc3.putBoolean( id32, false );
		var id33 = charIDToTypeID( "f2rl" );
		desc3.putDouble( id33, 0.500000 );
		var id34 = charIDToTypeID( "f2gl" );
		desc3.putDouble( id34, 0.500000 );
		var id35 = charIDToTypeID( "f2bl" );
		desc3.putDouble( id35, 0.500000 );
		var id36 = charIDToTypeID( "f2al" );
		desc3.putDouble( id36, 0.500000 );
		var id37 = charIDToTypeID( "fddl" );
		desc3.putInteger( id37, 0 );
		var id38 = charIDToTypeID( "fafm" );
		desc3.putDouble( id38, 0.150000 );
		var id39 = charIDToTypeID( "bafh" );
		desc3.putDouble( id39, 0.500000 );
		var id40 = charIDToTypeID( "dthc" );
		desc3.putBoolean( id40, false );
		var id41 = charIDToTypeID( "dth0" );
		desc3.putBoolean( id41, false );
		var id42 = charIDToTypeID( "smth" );
		desc3.putInteger( id42, 0 );
		var id43 = charIDToTypeID( "filg" );
		desc3.putDouble( id43, 2.200000 );
		var id44 = charIDToTypeID( "fieg" );
		desc3.putBoolean( id44, false );
		var id45 = charIDToTypeID( "filw" );
		desc3.putDouble( id45, 10.000000 );
		var id46 = charIDToTypeID( "over" );
		desc3.putBoolean( id46, false );
		var id47 = charIDToTypeID( "fblr" );
		desc3.putDouble( id47, 1.000000 );
		var id48 = charIDToTypeID( "nmcv" );
		desc3.putBoolean( id48, false );
		var id49 = charIDToTypeID( "ncnv" );
		desc3.putInteger( id49, 1009 );
		var id50 = charIDToTypeID( "nflt" );
		desc3.putInteger( id50, 1040 );
		var id51 = charIDToTypeID( "nmal" );
		desc3.putInteger( id51, 1034 );
		var id52 = charIDToTypeID( "nmbr" );
		desc3.putBoolean( id52, false );
		var id53 = charIDToTypeID( "nmix" );
		desc3.putBoolean( id53, false );
		var id54 = charIDToTypeID( "nmiy" );
		desc3.putBoolean( id54, true );
		var id55 = charIDToTypeID( "nmiz" );
		desc3.putBoolean( id55, false );
		var id56 = charIDToTypeID( "nmah" );
		desc3.putBoolean( id56, false );
		var id57 = charIDToTypeID( "nswp" );
		desc3.putBoolean( id57, false );
		var id58 = charIDToTypeID( "nmsc" );
		desc3.putDouble( id58, 2.200000 );
		var id59 = charIDToTypeID( "nmnz" );
		desc3.putInteger( id59, 0 );
		var id60 = charIDToTypeID( "usbi" );
		desc3.putBoolean( id60, false );
		var id61 = charIDToTypeID( "lien" );
		desc3.putBoolean( id61, false );
		var id62 = charIDToTypeID( "shdi" );
		desc3.putBoolean( id62, false );
		var id63 = charIDToTypeID( "shfi" );
		desc3.putBoolean( id63, false );
		var id64 = charIDToTypeID( "shmm" );
		desc3.putBoolean( id64, true );
		var id65 = charIDToTypeID( "shan" );
		desc3.putBoolean( id65, true );
		var id66 = charIDToTypeID( "clrc" );
		desc3.putInteger( id66, 0 );
		var id67 = charIDToTypeID( "vdx1" );
		desc3.putBoolean( id67, true );
		var id68 = charIDToTypeID( "vdx2" );
		desc3.putBoolean( id68, true );
		var id69 = charIDToTypeID( "vdx3" );
		desc3.putBoolean( id69, true );
		var id70 = charIDToTypeID( "vdx5" );
		desc3.putBoolean( id70, true );
		var id71 = charIDToTypeID( "v444" );
		desc3.putBoolean( id71, true );
		var id72 = charIDToTypeID( "v555" );
		desc3.putBoolean( id72, true );
		var id73 = charIDToTypeID( "v565" );
		desc3.putBoolean( id73, true );
		var id74 = charIDToTypeID( "v888" );
		desc3.putBoolean( id74, true );
		var id75 = charIDToTypeID( "alph" );
		desc3.putBoolean( id75, false );
		var id76 = charIDToTypeID( "usra" );
		desc3.putBoolean( id76, false );
		var id77 = charIDToTypeID( "usfs" );
		desc3.putInteger( id77, 0 );
		var id78 = charIDToTypeID( "prev" );
		desc3.putBoolean( id78, false );
		var id79 = charIDToTypeID( "rdep" );
		desc3.putInteger( id79, 3000 );
		var id80 = charIDToTypeID( "lomm" );
		desc3.putBoolean( id80, false );
		var id81 = charIDToTypeID( "scar" );
		desc3.putDouble( id81, 1.000000 );
		var id82 = charIDToTypeID( "scag" );
		desc3.putDouble( id82, 1.000000 );
		var id83 = charIDToTypeID( "scab" );
		desc3.putDouble( id83, 1.000000 );
		var id84 = charIDToTypeID( "scaa" );
		desc3.putDouble( id84, 1.000000 );
		var id85 = charIDToTypeID( "biar" );
		desc3.putDouble( id85, 0.000000 );
		var id86 = charIDToTypeID( "biag" );
		desc3.putDouble( id86, 0.000000 );
		var id87 = charIDToTypeID( "biab" );
		desc3.putDouble( id87, 0.000000 );
		var id88 = charIDToTypeID( "biaa" );
		desc3.putDouble( id88, 0.000000 );
		var id89 = charIDToTypeID( "siar" );
		desc3.putDouble( id89, 1.000000 );
		var id90 = charIDToTypeID( "siag" );
		desc3.putDouble( id90, 1.000000 );
		var id91 = charIDToTypeID( "siab" );
		desc3.putDouble( id91, 1.000000 );
		var id92 = charIDToTypeID( "siaa" );
		desc3.putDouble( id92, 1.000000 );
		var id93 = charIDToTypeID( "biir" );
		desc3.putDouble( id93, 0.000000 );
		var id94 = charIDToTypeID( "biig" );
		desc3.putDouble( id94, 0.000000 );
		var id95 = charIDToTypeID( "biib" );
		desc3.putDouble( id95, 0.000000 );
		var id96 = charIDToTypeID( "biia" );
		desc3.putDouble( id96, 0.000000 );
		var id97 = charIDToTypeID( "outw" );
		desc3.putBoolean( id97, false );
		var id98 = charIDToTypeID( "clcL" );
		desc3.putBoolean( id98, true );
		var id99 = stringIDToTypeID( "NVIDIA D3D/DDS" );
		desc2.putObject( id4, id99, desc3 );
		var id100 = charIDToTypeID( "In  " );
		desc2.putPath( id100, new File( upString2 ) );
		executeAction( id3, desc2, DialogModes.NO );
		}
		
//32ビットの保存関数
	function Save32()
	{
		upString1 = new File( upString1 );
		targaSaveOptions.resolution = TargaBitsPerPixels.THIRTYTWO;
		targaSaveOptions.rleCompression = false;
		docRef.saveAs( upString1, targaSaveOptions, true, Extension.LOWERCASE );
		var id104 = charIDToTypeID( "save" );
		var desc5 = new ActionDescriptor();
		var id105 = charIDToTypeID( "As  " );
		var desc6 = new ActionDescriptor();
		var id106 = charIDToTypeID( "barF" );
		desc6.putBoolean( id106, true );
		var id107 = charIDToTypeID( "fdev" );
		desc6.putDouble( id107, 3.000000 );
		var id108 = charIDToTypeID( "fbia" );
		desc6.putDouble( id108, 0.000000 );
		var id109 = charIDToTypeID( "urad" );
		desc6.putDouble( id109, 5.000000 );
		var id110 = charIDToTypeID( "uamo" );
		desc6.putDouble( id110, 0.500000 );
		var id111 = charIDToTypeID( "uthr" );
		desc6.putDouble( id111, 0.000000 );
		var id112 = charIDToTypeID( "xstf" );
		desc6.putDouble( id112, 1.000000 );
		var id113 = charIDToTypeID( "xthf" );
		desc6.putDouble( id113, 1.000000 );
		var id114 = charIDToTypeID( "qual" );
		desc6.putInteger( id114, 71 );
		var id115 = charIDToTypeID( "erdi" );
		desc6.putBoolean( id115, false );
		var id116 = charIDToTypeID( "erdw" );
		desc6.putInteger( id116, 1 );
		var id117 = charIDToTypeID( "usfa" );
		desc6.putBoolean( id117, false );
		var id118 = charIDToTypeID( "txfm" );
		desc6.putInteger( id118, 7 );
		var id119 = charIDToTypeID( "weig" );
		desc6.putInteger( id119, 0 );
		var id120 = charIDToTypeID( "tmty" );
		desc6.putInteger( id120, 0 );
		var id121 = charIDToTypeID( "mmty" );
		desc6.putInteger( id121, 32 );
		var id122 = charIDToTypeID( "smip" );
		desc6.putInteger( id122, 0 );
		var id123 = charIDToTypeID( "bina" );
		desc6.putBoolean( id123, false );
		var id124 = charIDToTypeID( "prem" );
		desc6.putBoolean( id124, false );
		var id125 = charIDToTypeID( "film" );
		desc6.putBoolean( id125, false );
		var id126 = charIDToTypeID( "alpb" );
		desc6.putBoolean( id126, false );
		var id127 = charIDToTypeID( "bord" );
		desc6.putBoolean( id127, false );
		var id128 = charIDToTypeID( "brdr" );
		desc6.putDouble( id128, 0.000000 );
		var id129 = charIDToTypeID( "brdg" );
		desc6.putDouble( id129, 0.000000 );
		var id130 = charIDToTypeID( "brdb" );
		desc6.putDouble( id130, 0.000000 );
		var id131 = charIDToTypeID( "mmft" );
		desc6.putInteger( id131, 2 );
		var id132 = charIDToTypeID( "fdcl" );
		desc6.putBoolean( id132, false );
		var id133 = charIDToTypeID( "fdaf" );
		desc6.putBoolean( id133, false );
		var id134 = charIDToTypeID( "f2rl" );
		desc6.putDouble( id134, 0.500000 );
		var id135 = charIDToTypeID( "f2gl" );
		desc6.putDouble( id135, 0.500000 );
		var id136 = charIDToTypeID( "f2bl" );
		desc6.putDouble( id136, 0.500000 );
		var id137 = charIDToTypeID( "f2al" );
		desc6.putDouble( id137, 0.500000 );
		var id138 = charIDToTypeID( "fddl" );
		desc6.putInteger( id138, 0 );
		var id139 = charIDToTypeID( "fafm" );
		desc6.putDouble( id139, 0.150000 );
		var id140 = charIDToTypeID( "bafh" );
		desc6.putDouble( id140, 0.500000 );
		var id141 = charIDToTypeID( "dthc" );
		desc6.putBoolean( id141, false );
		var id142 = charIDToTypeID( "dth0" );
		desc6.putBoolean( id142, false );
		var id143 = charIDToTypeID( "smth" );
		desc6.putInteger( id143, 0 );
		var id144 = charIDToTypeID( "filg" );
		desc6.putDouble( id144, 2.200000 );
		var id145 = charIDToTypeID( "fieg" );
		desc6.putBoolean( id145, false );
		var id146 = charIDToTypeID( "filw" );
		desc6.putDouble( id146, 10.000000 );
		var id147 = charIDToTypeID( "over" );
		desc6.putBoolean( id147, false );
		var id148 = charIDToTypeID( "fblr" );
		desc6.putDouble( id148, 1.000000 );
		var id149 = charIDToTypeID( "nmcv" );
		desc6.putBoolean( id149, false );
		var id150 = charIDToTypeID( "ncnv" );
		desc6.putInteger( id150, 1009 );
		var id151 = charIDToTypeID( "nflt" );
		desc6.putInteger( id151, 1040 );
		var id152 = charIDToTypeID( "nmal" );
		desc6.putInteger( id152, 1034 );
		var id153 = charIDToTypeID( "nmbr" );
		desc6.putBoolean( id153, false );
		var id154 = charIDToTypeID( "nmix" );
		desc6.putBoolean( id154, false );
		var id155 = charIDToTypeID( "nmiy" );
		desc6.putBoolean( id155, true );
		var id156 = charIDToTypeID( "nmiz" );
		desc6.putBoolean( id156, false );
		var id157 = charIDToTypeID( "nmah" );
		desc6.putBoolean( id157, false );
		var id158 = charIDToTypeID( "nswp" );
		desc6.putBoolean( id158, false );
		var id159 = charIDToTypeID( "nmsc" );
		desc6.putDouble( id159, 2.200000 );
		var id160 = charIDToTypeID( "nmnz" );
		desc6.putInteger( id160, 0 );
		var id161 = charIDToTypeID( "usbi" );
		desc6.putBoolean( id161, false );
		var id162 = charIDToTypeID( "lien" );
		desc6.putBoolean( id162, false );
		var id163 = charIDToTypeID( "shdi" );
		desc6.putBoolean( id163, false );
		var id164 = charIDToTypeID( "shfi" );
		desc6.putBoolean( id164, false );
		var id165 = charIDToTypeID( "shmm" );
		desc6.putBoolean( id165, true );
		var id166 = charIDToTypeID( "shan" );
		desc6.putBoolean( id166, true );
		var id167 = charIDToTypeID( "clrc" );
		desc6.putInteger( id167, 0 );
		var id168 = charIDToTypeID( "vdx1" );
		desc6.putBoolean( id168, true );
		var id169 = charIDToTypeID( "vdx2" );
		desc6.putBoolean( id169, true );
		var id170 = charIDToTypeID( "vdx3" );
		desc6.putBoolean( id170, true );
		var id171 = charIDToTypeID( "vdx5" );
		desc6.putBoolean( id171, true );
		var id172 = charIDToTypeID( "v444" );
		desc6.putBoolean( id172, true );
		var id173 = charIDToTypeID( "v555" );
		desc6.putBoolean( id173, true );
		var id174 = charIDToTypeID( "v565" );
		desc6.putBoolean( id174, true );
		var id175 = charIDToTypeID( "v888" );
		desc6.putBoolean( id175, true );
		var id176 = charIDToTypeID( "alph" );
		desc6.putBoolean( id176, false );
		var id177 = charIDToTypeID( "usra" );
		desc6.putBoolean( id177, false );
		var id178 = charIDToTypeID( "usfs" );
		desc6.putInteger( id178, 0 );
		var id179 = charIDToTypeID( "prev" );
		desc6.putBoolean( id179, false );
		var id180 = charIDToTypeID( "rdep" );
		desc6.putInteger( id180, 3000 );
		var id181 = charIDToTypeID( "lomm" );
		desc6.putBoolean( id181, false );
		var id182 = charIDToTypeID( "scar" );
		desc6.putDouble( id182, 1.000000 );
		var id183 = charIDToTypeID( "scag" );
		desc6.putDouble( id183, 1.000000 );
		var id184 = charIDToTypeID( "scab" );
		desc6.putDouble( id184, 1.000000 );
		var id185 = charIDToTypeID( "scaa" );
		desc6.putDouble( id185, 1.000000 );
		var id186 = charIDToTypeID( "biar" );
		desc6.putDouble( id186, 0.000000 );
		var id187 = charIDToTypeID( "biag" );
		desc6.putDouble( id187, 0.000000 );
		var id188 = charIDToTypeID( "biab" );
		desc6.putDouble( id188, 0.000000 );
		var id189 = charIDToTypeID( "biaa" );
		desc6.putDouble( id189, 0.000000 );
		var id190 = charIDToTypeID( "siar" );
		desc6.putDouble( id190, 1.000000 );
		var id191 = charIDToTypeID( "siag" );
		desc6.putDouble( id191, 1.000000 );
		var id192 = charIDToTypeID( "siab" );
		desc6.putDouble( id192, 1.000000 );
		var id193 = charIDToTypeID( "siaa" );
		desc6.putDouble( id193, 1.000000 );
		var id194 = charIDToTypeID( "biir" );
		desc6.putDouble( id194, 0.000000 );
		var id195 = charIDToTypeID( "biig" );
		desc6.putDouble( id195, 0.000000 );
		var id196 = charIDToTypeID( "biib" );
		desc6.putDouble( id196, 0.000000 );
		var id197 = charIDToTypeID( "biia" );
		desc6.putDouble( id197, 0.000000 );
		var id198 = charIDToTypeID( "outw" );
		desc6.putBoolean( id198, false );
		var id199 = charIDToTypeID( "clcL" );
		desc6.putBoolean( id199, true );
		var id200 = stringIDToTypeID( "NVIDIA D3D/DDS" );
		desc5.putObject( id105, id200, desc6 );
		var id201 = charIDToTypeID( "In  " );
		desc5.putPath( id201, new File( upString2 ) );
		executeAction( id104, desc5, DialogModes.NO );
	}
}

レビュー - modo実践チュートリアルビデオ インテリア編

早速忘れないうちにレビューを書きます。

ちなみにその日うちだか、日をまたいでか、それ程時間がかからずにダウンロード出来ました。

さすがに自動でした。

 

まだ全部は見ていないのですが、あらかた見ました。

 

外観パースの時よりも時間は少ないですが、若干速いペースで進んでいるかと思います。

モデリングに関しては、さすがです。

こんな使い方もあったか。と感心させられます。

特に初めて使われる人はこういった、ロジカルできちんとしたモデリングから入ると、

その後の進みが早いような気がします。

modoの機能が遺憾なく発揮されております。

 

そして、今回はそれでもモデリングは、そこそこ、といった扱いのようですが、メインはレンダリングです。

くどいようですが、モデリングだけでもやはりすごいです。

 

レンダリングに関しては、401 Rendering Techniquesの英語が分かればなお理解が深まるのだと思いますが、

今回初めて知ったことがたくさんありました、、

パラメータの調整は、なんとなくで行っておりましたが、やはりきちんと理由があります。

ソフト自体、人が作ったものなので、当たり前の話といえば当たり前なのですが、、

 

どのように学ばれたのか、分かりませんが、modoでレンダリングをするのであれば必須のチュートリアル、と言えるかと思います。

今まで無闇に値をいじってレンダリング時間を無駄に伸ばしていたことを痛感させられました。

 

付属で付いてくるスクリプトが入っていなかったので、Marsのfaqページを見たら、早速アップされておりました。

 

なんだかんだと、営業妨害というより、営業をしているようになってしまいました。

雑記11 - 仮説とデータ

また雑記です。

 

仮説、というものに付いて書いてみたいと思います。

分子生物学の技術を用い、免疫学によりノーベル賞を取ったのは利根川進さんです。

論文のタイトルは忘れましたが、免疫系の多様性はDNAの組み換えによって行われていることを証明しました。

 

当時DNAは一度作られると不変である、と信じられていたそうで、

それならば免疫系の多様性はどのように存在しているのかが疑問となっていました。

考えられる方法は二つで、一つははじめから情報を持っている。というものと、後から情報が作られる。というものでした。

 

組み換えが行われない限り、はじめから持っている、と考えるのが普通で、世界的にもそう考えられており、

利根川さんもそう考えていたそうです。

 

ただ、もしそうで無かったら面白いな。という気持ちで研究を続けていたそうです。

 

免疫の情報をはじめから持っているとすると、その情報に無いウィルスが発生した場合、その生物は絶滅することとなります。

それに出来る限り対処する場合は、より多くの情報を持つことが必要になります。

なので、現在の生物は偶然そういったことがなく進化してきたのだろう。とされていたようです。

 

利根川さんが研究していたときに世界で3つのチームがその研究をしていたそうです。

記憶が定かではないのですが、研究の発表の場で、他の2つのチームは同じ仮説、つまりはじめから持っていた、という立場でした。

そして、片方のチームはそもそも実験過程に問題があることを、利根川さんは指摘をしています。

純度の高いRNAの抽出に失敗していたそうです。

RNAとは二重の螺旋構造を持つDNAの一方が切り離されたものです。

 

そして、もう一方のチームは実験は問題ないそうでしたが、抽出したデータの読み取り方に問題があったと指摘されておりました。

 

そのチームはデータが示すものが最小数だと考えました。

はじめから情報を持っている、という考えから抜け出すことができずに、データを見ていた、ということです。

恐らくまだサンプリング数も少なかったのだろうと思います。

 

利根川さんはそれを最大数だ、と考えていました。

その最大数の数からさらに組み合わさりが起こり、環境にあった免疫を作る。ということです。

最終的にはその考えが証明され、ノーベル賞の受賞に至ったそうです。

 

仮説、というバイアスのかかった目でデータを見ることしか人間にはできない。

データというもの自体は数値の羅列でしかなく、そこに存在する法則を発見するものはそうであって欲しい、という思いが存在してしまう。

と言った話だったかと思います。

考えさせられます。

 

利根川さんは日本人の技術の素晴らしさは実験精度などに現れ、世界的にも十分通用するすごいものだ、とも言っておりました。

CGをやっていても感じますが、自分もそう思います。

日本の車会社が中国に初めて工場を作ったときに、バンパーの裏まで磨く必要はない、と言ったそうですが、

それに対して日本人はそれがジャパンクオリティーなんだ、という説明をした、という話を聞きました。

 

全てに対してそれは良いことではないとは思います。

それの反作用として、形骸化したものを引きずり続けるところが見受けられます。

恐らくそれが民族性なのだと思います。直すとかそういった問題ではなく、それの長所をうまく活用できれば良いんじゃないか?と思います。

 

最後に面白い話をしておりましたが、利根川さんの研究チームに熱心なクリスチャンの女性がいたそうですが、

分子生物学というものはやってゆくと、信心深い人がそうで無くなる傾向のあるものだそうで、その女性もだんだんと信仰心が薄れていったそうです。

しかし、ある日夢で利根川さんがノーベル賞を受賞する夢を見て、それが現実のものとなったときに再び神の存在を信じるようになったそうです。

 

利根川さんはその後、脳に興味を持ち、そちらの研究を進めたそうです。

その女性のことも脳の作用だ、とおっしゃっていたかと思います。

 

発生学で言うと免疫系と中枢神経は同じだそうです。

やはり同じく多様性でつながります。

新たなウィルスに対応するため、免疫系は多様性を持ち変化しました。

新たな環境や社会状況に対応するため、脳は多様性を持ち、変化します。

なるほど同じです。

 

話は関係ありませんが、「modo実践チュートリアルビデオ インテリア編」を購入しました。

ダウンロード出来るようになるのが楽しみです。お盆休み明けなのでしょうか?ちょっと待ち遠しい。

またmodoでの勉強が再開されるかと思います。

もちろん営業妨害はしたくないので、内容を詳しく書くような事はしませんが。

 

それと、先日映像系のCGをされていた方とお話させていただきました。

この業界に入って、初めてまともにCGの会話ができたように思います。未だに興奮覚めやらぬ、と言った感じです。

やはりゲーム業界のCGは力技が多く、無駄に労力を使っている。と感じていたことは間違っていないようです。

modo使えばもっと早く仕事が出来るのに、いつも思います。

雑記10 – CP対称性

仮説の話を書こうかと思ったのですが、

こんか記事を見つけました。

 

Yahooの記事で昔に読んだものをいつも探せないで困っておりました。

こういった記事はどれくらい保存されるものなのでしょうか?

 

CP対称性の破れ、という言葉があります。

charge(物質と反物質の対称性)parity(鏡像対称性)が量子レベルでの観測で成り立たない、というものです。

反物質というものは電荷が逆のもので、地球上には存在しないそうですが、宇宙には微量に存在し、人工的にも作ることは可能だそうです。

物質と反物質がぶつかると光子(γ線)を放出し、消滅するそうです。

 

日本人で2008年にノーベル賞をとった、小林さんと益川さんはこの対称性の破れはクオークという物が6種類存在することで起こるのではないか?

という仮説を立て、それが実証されたことにより受賞されました。

確かその仮説は院生時代に書かれた、相当古いものだったかと思います。

 

当時はクオークというもの自体の存在が疑われていたようで、様々な実験結果でそれ自体が存在しない、

とか5つであるとか、色々と言われていたそうです。

 

クオークと言うものは、分子-原子-原子核-陽子-クオーク。

というとても小さいもので、現段階ではこれ以上小さい構成要素はないであろう、と言われております。

 

対称性が全てに成立するのであれば、宇宙の起源とされているビッグバンにより物質と反物質は等しく作られ、

それによりお互いが干渉しあって何も残らない。

その対称性がものすごく小さい単位で不均等であれば物質が反物質を凌駕し、現在の宇宙は存在し得る。

 

なんだか途方もない話です。

微妙に仮説の話が入りました。この場合当然のことながら、人間が見つけられるものは全てが仮説です。

一つでも定説があるのだとしたらそれこそイデアだと思います。

前に書いたかと思いますが、大きさの問題でもあります。

 

ここ最近昔に比べて天気予報は当たるようになりました。しかし、気候の変動で当たらなくもなりました。

これは、現在の天気予報が100年ちょっと前から始まったわけで、その時からのデータの蓄積によるシミュレーションだからです。

たかが100年です。ここ100万年の地球の気温は10万年ごとに寒暖を繰り返す比較的落ち着いたものだ。そうです。

なんだか面白いです。天気予報でここ10万年はだいたい暖かいでしょう。等と言われたら笑えます。

 

巷で流行る健康法やサプリメントの類もデータとしてもサンプリング数が極端に低いものが見受けられます。

よりデータを確かなものにするにはサンプリング数が必要で、何万年とかかる進化において、

数千年の歴史しか持たない人類の文明、という尺度で測っても測り切れるはずがありません。

まぁ、これも極端な話ですが。

 

やはりそういった面でも脳化が進んでいる。という事なのでしょう。

養老さんがどこかで書かれていましたが、人に言われて気づいたのがきっかけで、人は二系列の情報を持っている。

という事を書いておりました。

脳と遺伝子です。病は気から、という言葉を「神経系の情報が免疫系の情報に作用」という言葉で表しておりました。

どうも脳の役目というものは遺伝子の役割を凌駕することを一つの目的としているように見受けられます。

 

長い時間をかけて作られた遺伝子が最近できた脳によって手を加えられる。

自然に手を加え自分の都合に合わせる人間の姿がかぶさります。

 

なんだか極端な話になりそうですが、個人的には全くの自然回帰はどうかと思います。

道具は道具として使う。そんな感じでしょうか?

 

アフリカで石器時代以来の暮らしをしている人を取材した本を読みましたが、

彼らの生活は女性が一日2,3時間ほど働いて、果物などを採取し、男性は2,3日に一度6時間以上をかけて猟に出かける、

というものでした。

それ以外の時間は皆で集まってのんべんだらりと暮らしているそうです。

著者も現代の生活を営む我々と彼らとでは、どちらが人間として幸福なのだろうか?と書いておりました。

 

そういった生活も良いのでしょうか、文明国に生まれた人間がそんな生活できようはずもありません。

しかし、現在の人の生活を見ていると、みんな忙しそうで、生きていて幸せなのか疑問に思うこともあります。

最近は五月病が減ってうつ病が極端に増えたそうです。そんな生活をしていたら、そうなるだろ、と思います。

 

関係ありませんが、HIBIさんの新しいチュートリアルが出るそうですね、メールが来ました。

modo501のアップグレードを待っていたのですが、シーグラフでも発表され無かったのでどうもまだ先の事のようです。

最近の3Dの流行の移り変わりは目を見張るばかりです。

3dcoatのセミオートリトポロジー機能や、GPUレンダラー、PtexというUVに変わる新たなテクスチャの持ち方など、

ワクワクすると共に、いつまでついて行けるのかちょっと不安になります。

是非とも501にはそういったテクノロジーを追加してもらいたいです。

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です