前回、岩、というか石に苔をつける作業をやったが、その応用で地球のような物を作る。
※これはリアリティを求めたものではない。
こんなのができあがる。
[①]. まず球をUV展開しないと行けない。
こちらを参考に:http://qcganime.web.fc2.com/BLENDER/Misc01.html
1. 点が集中する |
2.押し出してから |
||
3.UV展開 Sphere Projection Directionを Align to Objectに |
4.頭頂部の点を メモしておいた座標に 収束させる |
こうしてできたUVマップ。
[②]. 次にテクスチャを苔、海、地図の三枚読み込む
地図はhttp://www.collabonote.com/template/waiwai/map/003/003.htmこちらをお借りして陸を黒く塗りつぶした。
[③]. 球を選択し、二つ目のUVマップを追加する
[④]. Editモードへ入り、UV Editingが見えるようにして、UV Mapsに追加したUVMap.mossを選択する。
UV Editing上で[s]を押し、UVマップを拡大する。
これで、UVMapとUVMap.mossが異なるマップになった。
[⑤]. あとはノードエディタで以下のように設定。
前回の岩に苔をはる作業との大きな違いは、ColorRampのFacの入力元を、陸を黒くした白地図にしているところと、陸と海のテクスチャで違うUVマップを使っているところ。あと、海はDiffuseじゃなくてGlossyにしている。
陸と海のUVマップを変えている理由は、陸側のUVマップを拡大・縮小( [④]参照 )すれば海はそのままにして陸のテクスチャの解像度を自由に変えられるから。逆もまたしかり。
あと、海をGlossyにしているので、海だけてかっている。陸にてかりはない。
タイトル:一生お金に困らない生き方
著者: 心屋仁之助
ページ数:201ページ
さて、普段ならぜってーこの手の本は買わないんだが、某所でメンタルブロックの外し方の参考書籍に上げられていたので購入。その方面の書籍にはやはり敵わないが、参考にはなった。少なくとも買って後悔はしていない。
内容は、あえて大別するなら引き寄せ系なので、そっちを多少知っている人には目から鱗的な特別真新しいことは書いていない。ただ、引き寄せの法則関係の本の場合、自分が幸せになれるなにかを引き寄せるという、いわば漠然とした内容なのに対し、この本はお金に的を絞っているのでとても具体的でわかりやすい。
内容を一言で表すと、メンタルブロックを外し、自己評価を上げ、お金の流れをせき止めない(ちゃんと使う)でいれば、なんか知らんが裕福になるよ、という、「そんな事で金持ちになれるなら誰も苦労はせんわ!だから誰もやらないんだ!」的なことが書かれている。(いい加減その矛盾に(ry )
で、実際に心の癖を直したりするにはどうすればいいんですかということもちゃんと書いてはあるが、何しろ3~4時間で読めてしまったくらいの本なので小難しいことは何も書いていない。信じる信じないは別として誰でもすんなり理解できるはずだ。
はずなのだが
結局アマゾンレビューはアテにならんというか、Amazonの低評価、人数は少ないが、明らかに目次すらろくに読んでいないものがあるので、参考にしてはいけない。一般論として、アマゾンレビューから信者とアンチをふるい落とすのは大変なので、
google様の力を借りて立ち読みしよう
本当はレビューがどれぐらいアレなのかちょっと書いたのだが、読み方によっては個人攻撃 になりかねないので削除した。もし購入した人がいたら、是非照らし合わせてみて欲しい。ちなみに、潜在意識は科学的に研究も証明もされているはずなので、その活用という観点から見れば非科学的ではない(と思う)。常識的でないだけである。私は夕べ一気に読んだばかりなので効果があったとかなかったとかは全くいえないが、私の中の評価が結構高かったのは本当だ。
http://blendersketch.blogspot.jp/2014/11/waterfall-series3-1.html
このチュートリアルの岩に苔を生やすところで何が起こっているかわからなかったので真面目に考えた。
こんなのができあがる。
[α]. まず石っぽいオブジェクトを作って(別にsphereやCubeでもいいけど)、Editモードに入って全頂点選択→[U]→[Smart UV Project]でUV展開する。
次にオブジェクトにマテリアルを+して、ノードエディタへ行く。
[β]. そして以下のように設定
[γ]. ②、③はそれぞれ、普通に岩のテクスチャと苔のテクスチャを読み込んで、Diffuseの色として指定しているだけ。
[δ]. ①が問題で、まずノイズテクスチャを作り、その色をColorRampの入力へつなげている。
これをそのままDiffuseへつなげて適用すると、下のようになる。
[ε]. この黒~白までの値を、[β]にあるMix ShaderのFacへ入れる。Mix ShaderはShader1とShader2を合成するが、合成の割合はFacで決まる。
●Facが0に近い場合、Shader1がより優先される
●Facが1に近い場合、Shader2がより優先される
従って、ColorRampをマテリアルに適用した時([δ]参照)に黒に近い部分はよりShader1のテクスチャが、白に近い部分はよりShader2のテクスチャが強くなる。
これによって[δ]の図の黒い部分はShader1で指定した苔のテクスチャが、白い部分にはShader2で指定した岩のテクスチャが出ることになる。
ところで、Cyclesはマテリアルの設定にNodeエディタを使うことがほぼ前提になっているらしい。なぜなら殆どのチュートリアルではそうしているからだ。
そこでバンプマップの使い方が今ひとつわかりづらかったので調べた。
こんなのができあがる。
使うバンプマップはこれ:
手順は
①UV展開する
②以下のようにノードを設定する
●[Add]-[Shader]-[Glossy BSDF]
●[Add]-[Shader]-[Diffuse BSDF]
●[Add]-[Shader]-[Mix Shader]
●[Add]-[Input]-[Texture Coordinate]
●[Add]-[Texture]-[Image Texture]
●[Add]-[Output]-[Material Output]
Glossyはなくてもいいが立体感が出にくい。
近所の村の市の店長はとてもいい人なのだが、中島みゆきの糸をBGMにかけていたときはさすがに神経を疑った。いったい何のつもりだ。泣き出すところだっただろうが。
そんなわけでプエルトリコがデフォルトしたらしい。デフォルトってどういうことなのか正確には掴めていないんだが、要は○○日までにお金払いますよ、という約束を果たせなかったということのようだ。気持ち的に近い言葉としては、不渡りとか踏み倒しとか、そのあたりだろうか。
http://www.yomiuri.co.jp/world/20150630-OYT1T50077.html
この結果、高金利の金融商品「プエルトリコ債」が償還されなくなる恐れがあり、米国の投資信託などが多く保有していることから、国際金融市場に深刻な影響を与える懸念がある。
どうやらこういうのはデフォルト宣言があった次の日にどうなる、というものではなく、数週間かけて影響が出てくるという。もうしばらくしたら連鎖倒産が始まるんじゃないか、と予想する人も沢山いるようだ。どうせゼロ金利だし、取り付け騒ぎとか預金封鎖がくる前に定期預金をタンス預金に切り替えたほうがいいかもしれない。箱根山も騒がしいしね。
あとソートのほうなんだが、C#の例は腐るほどあるのにC++/CLIの例がなかなか見つからない。
C#と同類のはずなのに^つけないといけないとか、C++と名乗りながら継承にpublicつけないとか、お前は誰だ言語なのでメモしておかないとはまる可能性がある
// ConsoleApplication2.cpp : メイン プロジェクト ファイルです。 #include "stdafx.h" using namespace System; ref class DataType{ //自作クラス 何でもいい int a; System::String^ b; public: int geta(){ return a; } System::String^ getb(){ return b; } void set(int _a,System::String^ _b){ a = _a; b = _b; } }; //比較用のクラス。 //IComparer<>を継承したクラスを作成し、 //virtual int Compareメンバ関数を定義する ref class Ccmp : System::Collections::Generic::IComparer<DataType^> { public: //xがyより小さいときはマイナスの数、大きいときはプラスの数、同じときは0を返す virtual int Compare(DataType^ x, DataType^ y) { if( x->geta() < y->geta() ) return -1; else if( x->geta() > y->geta() ){ return 1; } return 0; } }; //使い方 int main(array<System::String ^> ^args) { //データ(配列)を用意 int sz = 7; array<DataType^>^ ary = gcnew array<DataType^>(sz); for(int i = 0; i < sz; i++ ){ ary[i] = gcnew DataType(); } ary[0]->set(5,"5"); ary[1]->set(2,"2"); ary[2]->set(7,"7"); ary[3]->set(1,"1"); ary[4]->set(3,"3"); ary[5]->set(5,"5"); ary[6]->set(8,"8"); //ソート実行。 Ccmp^ cmp = gcnew Ccmp();//比較用クラスのインスタンスを作成し、 Array::Sort( ary, cmp);//Array::Sortの第二引数にそのハンドルを渡す //結果確認 for(int i = 0; i < sz; i++ ){ Console::WriteLine( "{0} {1}",ary[i]->geta() , ary[i]->getb() ); } int k = Console::Read(); return 0; }