ぬの部屋(仮)
nu-no-he-ya
  •      12
    3456789
    10111213141516
    17181920212223
    242526272829 
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
        123
    45678910
    11121314151617
    18192021222324
    25262728   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    15161718192021
    293031    
           
         12
    3456789
    10111213141516
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
          1
    2345678
    9101112131415
    16171819202122
    232425262728 
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
  • ngPlantで木を作る (4) (Blenderでレンダリング)

    ngPlantで木を作り、それをBlenderでレンダリングする。

    ngPlantで貼り付けたテクスチャがそのまま持って行けるので、少し設定をいじるだけで簡単にレンダリングできる。

    まずngPlant側で木を作る。 76_toBlender_create

    [File]-

    [Export to]-

    [Alias-Wavefront
    (.OJB)]

    77_toBlender_export
    Parametersウィンドウが出る。
    Scale to heightは、
    大きいとBlender側で巨大に
    なってしまうので、
    1などにしておいた方が無難
    78_toBlender_parameters
    フォルダ選択ウィンドウで
    保存したいフォルダを指定。
    次に右図のウィンドウが出る。
    ファイル名を入力してOK
    79_toBlender_choosename

    Blenderへ行き、
    [Files]-[Import]
    -[Wavefront(.obj)]
    を選択

    80_toBlender_import
    読み込んだ直後。
    見えないがテクスチャも
    ちゃんと貼り付けられている。
    81_toBlender_view1
    葉を選択し、
    マテリアルへ行き、
    ・SpecularのIntensityを0に
    ・Transparencyをチェックし
    ・Alpha,Specularを0に
    設定する
    82_toBlender_alpha1
    テクスチャへ行き、
    ・Influenceにチェックを入れる
    ・ついでにInterpolationの
    チェックを外す
    設定する。

    Interpolationのチェックを
    外すと、テクスチャのぼけが
    少しだけ改善する

    83_toBlender_alpha2

    光源等々設定し、レンダリングする。

    84_toBlender_result

     

     

     

     

     

     

     

     

    石割桜

    KONICA MINOLTA DIGITAL CAMERA

     

    2015/04/19 岩手県盛岡市 石割桜。

    見る機会は10回以上あったきがするが、ちょうどいい満開に遭遇したのはこれが初めてかもしれない。

    花自体はとても見事に咲いているのだが、支えの棒がこうもたくさんあっては、老体を無理矢理酷使させられているように見えて哀れに思えてくる。いい加減休ませてやったらどうか。

     

     

    ngPlantで木を作る(3)

     

    ngPlantで木を作る作業の続きで、今日は枝に葉っぱをつける。

    葉はテクスチャでつけるので、まずは葉の画像を用意する。gimpなどで葉っぱっぽい何かを描いて、.tga .jpg .pngのいずれかの形式で保存する。別にペイントでもいいが、背景を透明にできないのでせめてアルファを使えるソフトがいい。

     

    早速やってみよう。

     

     

     

     

     

    ・・・できただろうか。

    leaf

     

     

    まずngPlantを起動し、葉っぱが生える枝を用意する。

    今回は説明のために主幹をそのまま使用。

    ① 葉っぱをつけたいBranchを右クリック→[append branch]→[New branch]で枝を追加する。
    74_leaf_addbranch

    ② 追加されたBranchを右クリック→[Stem model]→[Quad]を選択。
    75_leaf_quad

    ③ 見づらいので、まず[Stem]のLengthを大きくする。

    ④ このままWidthを大きくすると重なってしまうので、[Branching]へ行きLimit maxをOnし、Max. numberを3程度にする。これで枝から生えている葉っぱは三枚となる(はず)。

    ⑤ [Stem]に戻りWidthを大きくする。少し細長い四角形にする。

    ⑥ [Material]タブへ移動

    62_Branch3_Material

     

     

    Base color
    葉の色。テクスチャを使う場合は
    あまり関係がないが、そうでない場合は
    ここの色を緑色などにするだけでも
    葉ができてしまう。

    63_Material_BaseColor1

    Dif … diffuse(拡散光)
    細かいことは気にせず、
    葉のテクスチャはここに設定する
    Nor … Normal(法線)
    光が反射する時の計算に使う
    法線マップを設定する。なくてもいい
    Aux … 不明

    このボタンは、③の?をクリックしたときに、
    Difを設定するか、Norを設定するか …
    を指定するので、クリックしただけでは
    何も起こらない

    Texture
    テクスチャの設定ボタン兼プレビュー。
    大きな赤い?をクリックすると、
    ファイル読み込みダイアログが表示
    されるので、テクスチャファイルを
    読み込む。
    読み込んだ後小さな×印をクリック
    すると、テクスチャを解除できる
    右図は、
    左が自作した葉を設定した例
    右はngPlantが用意したfernleaf.tga
    を設定した例
    背景は黒く表示されているが、
    実際には透過色。

    65_Material_Texture1 66_Material_Texture2

    注意:テクスチャファイルは、
    [File]-[Preferences]の[Tex. locations]
    で設定したディレクトリ内のファイルしか
    扱えない

    double-sided
    ngPlantのデフォルトでは、
    ポリゴンの片面しか表示されない。
    (見る方向によって葉が消える)
    葉の時は大抵はこれでは困るので、
    チェックを入れてどちらから見ても
    葉が表示されるようにする。
    右図は左がチェックなし、
    右がチェックあり。
    67_Material_DoubleSide1 68_Material_DoubleSide2
    Transparent
    葉の透明色を反映させるかどうか。
    透明色を使用している場合、
    チェックを入れる
    右図は左がチェックなし
    右がチェックあり
    69_Material_Transparent1 70_Material_Transparent2
    Billboard mode
    葉をビルボード状態にする。
    Disabledでoff。
    Disabled以外では、
    どの方角から見ても
    面が正面を向いている状態を保つ
    右図は左がDisabled
    中央がSpherical
    右がCylindrical
    71_Material_Billboard1 72_Material_Billboard2 73_Material_Billboard3

    Control enabled
    調査中

     
    Fade-in
    調査中
     
    Fade-out
    調査中
     

     

     

     

    手品のタネ的な何か(C++)

    解説:

    ① Sampleはメンバ変数A,Bを持つ
    ② SampleのインスタンスはA=1,B=2で初期化される
    ③ showA,showBはA,Bを画面に表示する
    ④ A,Bはprivateで、setもfriend関数も用意していない。従ってA,Bを書き換える方法は存在しない

     

    class Sample{
    int A;
    int B;
    public:
    	Sample(){
    		A=1;
    		B=2;
    }
    void showA(){	std::cout << "A = " << A << std::endl;	}
    void showB(){	std::cout << "B = " << B << std::endl;	}
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Sample instance;
    
    	instance.showA();
    	instance.showB();
    int k;
    	std::cin >> k;
    return 0;
    }
    

     

    はずなんだが、Sampleに一切手を加えないでA,Bを編集することができる。

     

    int _tmain(int argc, _TCHAR* argv[])
    {
    	Sample instance;
    int* magicA = (int*)(&instance);
    int* magicB = magicA + 1;
    *magicA = 10;
    *magicB = 20;
    	instance.showA();
    	instance.showB();
    int k;
    	std::cin >> k;
    return 0;
    }
    

    意図してこれをやる人間はそうそういないと思うが、間違ってこうなっしまうケースは結構頻繁にある。そして謎の理屈でポインタがだめなやつだという烙印を押されるのである。

     

     

     

    ngPlantで木を作る(2)

    というわけでngPlantの続き。主幹に枝を追加した後、枝振りを作っていく。

     26_Branch2_Branching

     

     

     ①

    Density
    枝が生える密度を指定。
    例えば、
    Dencityが大きいと、
    Length=15の幹から10本の枝、
    Dencityが小さいと、
    Length=15の幹から5本の枝、
    というように変化する。
    本数で指定したい場合は
    ③,④,⑤で設定する。

    右図はそれぞれDensity=
    0.3 , 1.0 , 2.5

     26_density_0.3 27_density_1.0  28_density_2.5  
     ②  Variation
    不明
     
     ③  Min.number
    枝の最小の本数。
    Densityが小さかったり、
    元の幹が短かったりすると、
    どう設定しても枝が表示されないことがある。
    ここで設定すると、必ずこの本数だけは
    枝が生成される
    右図はDensity=0.01における
    Min.Number=
    0 , 3 , 10
     29_min.number1_density0.01 30_min.number3_density0.01 31_min.number10_density0.01
     ④  Limit max
    ⑤Max.numberを有効にするかどうか。
    無効の場合Densityなどの設定によって
    枝がいくらでも増えるようになる。
    右図はMax.number=3でLimit maxを
    Off(左)及びOn(右)
    Offの状態では、Max.numberより多くの
    枝が生えてしまっている。
     32_Branch2_LmitmaxOff 33_Branch2_LmitmaxOn
     ⑤  Max.number
    幹の長さやDensityによっては、
    枝がもの凄く多くなることがある。
    この値を設定しておくと、最大でも
    この数しか枝が増えなくなる。
     ④ ↑ 参照
     ⑥  Multiplicity
    同じ場所から枝が指定した本数だけ生える。
    枝を各方向に伸ばす場合、
    大抵は沢山生やしてRevAngleで
    巻くように生やすが、それでは同じ場所から
    枝が出てこない。
    右図は左からそれぞれMultiplicity=
    1,3,7
     34_Branch2_Multiplicity1 35_Branch2_Multiplicity3 36_Branch2_Multiplicity7
     ⑦  Min. offset
    枝が生え始める、根元側の位置を指定。
    右図は左からMin.offset=
    0.00 , 0.50 , 0.90
     37_Branch2_minoffset000 38_Branch2_minoffset050  39_Branch2_minoffset090
     ⑧  Max offset
    枝が生え終わる、先端側の位置を指定。
    右図は左からMax.offset=
    1.00 , 0.50 , 0.10
     40_Branch2_maxoffset100 41_Branch2_maxoffset050 42_Branch2_maxoffset010
     ⑨

     Start RevAngle
    RevAngleを指定するときの初期位置。
    RevAngleは一番下(地面側)の枝から
    何度回転という計算をするので、
    一番下の枝が幹のどの方向に
    ついているのかを決定する。

    いわゆる「正面」が変わる。

     43_Branch2_Start_RevAngle_044_Branch2_Start_RevAngle_45

    45_Branch2_Start_RevAngle_0_top46_Branch2_Start_RevAngle_45_top   

     ⑩  RevAngle
    枝が生える方向を角度で指定。
    特にこだわりがなければ137.5度(黄金角)
    にしておくと自然に見える。
    右図はRevAngleを137度にした例。
    ngPlantのRevAngleは小数点以下を
    指定できない点に注意。
     47_Branch2_RevAngle_137 48_Branch2_RevAngle_137_top
     ⑪  Variation
    (予測)RevAngleが機械的すぎるので、
    枝が生える方向にばらつきを持たせる(?)
    右図は
    Variation=0.0(左)と
    Variation=0.9(右)
     49_Branch2_Variation_0.0 50_Branch2_Variation_0.9
     ⑫  RotAngle
    枝そのものが回転する。
    枝に対してStemのAxis variationなどを
    指定しているとわかりやすい。
     51_Branch2_RotAngle_0 52_Branch2_RotAngle_15 53_Branch2_RotAngle_45 54_Branch2_RotAngle_200
     ⑬  Declination
    枝が生える上下方向の角度を指定。
    左右の赤点を上下に動かして指定する。

    55_Branch2_Declination_156_Branch2_Declination_258_Branch2_Declination_4

    57_Branch2_Declination_359_Branch2_Declination_560_Branch2_Declination_6

     Variation
    枝が上に伸びるか、下に伸びるかに
    ばらつきを持たせる
    右図は
    Variation=0.0(左)
    Variation=0.5(右)
     61_Branch2_Variation_0.0 61_Branch2_Variation_0.5