ぬの部屋(仮)
nu-no-he-ya
  •      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     
         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
           
  • Rock Pile (石の破片の山)を作るチュートリアルを試す(2)

    How to make a Rock Pile in Blender 2.73! ( Easy )

    砕ける範囲を変更[6:45~ ]

    [Rigid Body]→[Rigid Body Collisions]→Collision Margin→Margin の値を変更して、爆発の範囲を調整出来る。

    margin off

    margin = 0.1

    爆発を大きくすると、大部分の破片が落下し、表示範囲の外に出てしまうが、レンダリング時にはそれらも計算されてしまい無駄になる。

    • 破片が選択されているならそのまま、選択されていないなら[Ctrl + I]等で選択
    • [Num 5] で平行投影に切り替え → [Num 1]で正面からのビューを表示
    • [B]キーで矩形選択を開始し、マウスの中央ボタンドラッグで矩形範囲内の選択を解除
    • [X]キーで選択中の破片を削除

    により、余計な破片を一括で削除出来る。

    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    Rock Pile (石の破片の山)を作るチュートリアルを試す(2)


    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    How to make a Rock Pile in Blender 2.73! ( Easy )

    1.オブジェクトの配置 [0:50~ ]

    [Shift+A]で Plane 及びIco shpereを配置。Planeは拡大する。
    Ico shpereは大きさを維持し、位置を(0,0,1)に移動する。

    Cell Fractureの追加・実行

    Cell Fractureアドオンの有効化

    [Ctrl+Alt+U]でUser Preferenceを表示し、”Cell Fracture”を検索、有効化する。

    Cell Fractureの適用

    Ico Sphereのオブジェクトを選択した状態で、ToolsのCell Fractureボタンを押す。

    Cell fracture selected mesh objectsを次のように設定

    処理が終わると、隣のレイヤーに結果のオブジェクトが生成されている。

    物理シミュレーションを追加[04:00~ ]

    砕かれた破片が全て選択状態のままで、
    [Physics]→Add Active をクリックする。

    [Physics]→[Rigid Body]でRigidを追加。続いて

    • [Rigid Body Collisions] → Friction: 0.6
    • [Rigid Body Collisions] → Bounciness:0.1

    この設定を、Copy from Activeですべての破片へ適用する。

    最初のレイヤーへ行き、Planeを選択。Rigid Body→Type:Passiveに設定。その後[M]でPlaneを隣のレイヤーへ移す。

    [Ctrl+I]で選択状態を PlaneからIco Sphereの破片へ変更する。

    Ico Sphereの破片がすべて選択されていることを確認し、[Pivot Point]の種類を”Indivisual Origins”に変更し、[S]でサイズを僅かに縮小する。

    ここまでの結果

    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    Rock Pile (石の破片の山)を作るチュートリアルを試す(2)


    Blenderで鎖のチュートリアルを試す(3)

    シミュレーションの速度調整[08:40~ ]

    シミュレーションの速度が遅すぎるのはスケールの問題との事。しかしモデルの方を縮小するとBlenderがフリーズする可能性が高くなる。この動画では、スピードの変更でより自然な速度に近づけるという手段をとっている。

    speedの数字を上げることで、アニメーションが高速になる。

    シミュレーションのベイク

    他のソフトウェアへエクスポートする手段として、ベイクしてキーフレームに変換する。

    物理シミュレーションしている全てのオブジェクトを選択し、Bake To Keyframesをクリックする。

    ベイクするフレームの範囲を指定するダイアログが出てくるので、OKをクリックする。

    おまけ

    全て選択せずにベイクするとこうなる

    Blenderで鎖のチュートリアルを試す(2)

    1.質量の調整

    質量の調整は、設定したいオブジェクトを選択した状態で
    [Physics]→[Rigid Body]→Mass から設定する。

    初期状態で、球体のMassを30に設定すると、鎖がちぎれる。

    この場合、全ての鎖のMassをある程度上げる。選択したオブジェクトの全てのMassを上げる場合、まずアクティブなオブジェクト(Originがオレンジ色)のMassを上げ、その後Copy from Activeを押して、他のOriginが赤い選択中のオブジェクトへ適用する。

    2.壊される側のブロック(Cube)を追加

    1.Cubeを追加 [06:22~ ]

    [Shift+A]→[Mesh]→Cube でCubeを追加

    2.Arrayで複製・適用

    CubeにArrayモディファイアを三つ追加する。上から、
    Count : 8 , Relative Offset = (1.032 , 0 , 0)
    Count : 8 , Relative Offset =( 0, 1.02, 0 )
    Count : 5 , Relative Offset = ( 0 , 0 , 1.02 )

    と設定し、全てApplyする。

    3.Apply後のCubeを別オブジェクトに分割、Origin再設定[07:30~ ]

    ArrayをApplyした後のCubeは全て一つのオブジェクトになっているので、個別のメッシュに分割する。

    1.Editモードへ行き、全て選択

    2. [P] → By loose parts

    このままでは、オブジェクトのOriginが全て一カ所に集まっている。Blenderの物理シミュレーションはOriginの位置を重心として扱うため、各キューブのOriginを各キューブの中心へ移動しなければ上手く動かない。

    [Ctrl + Alt + Shift + C] → Origin to Geometry を適用する

    4.Cubeにシミュレーションを追加

    Cube一つを選択状態にし、[Physics]→[Rigid Body]を有効にし、Massを0.1に設定する。


    今設定した(青くなっている)Cubeを含め、他のCubeも全て選択し、Copy from Activeで全てのCubeに設定をコピーする

    Blenderで鎖のチュートリアルを試す(1)

    Blender Tutorial – Quick Rigid Body Fun

    1.鎖を作る [0:11~ ]

    1.トーラスを作成

    [Shift+A]→[Mesh]→[Torus]

    2.トーラスから鎖の形にする

    [Num+7]で上面からの図に切り替え、Editモードへ移行し、Torusを楕円にする。その後[Shift+D]で複製し、[R+Y]で90度回転する。

    ① Torusを伸ばす

    ② Torusを鎖にする
    ③鎖を増やす

    なお、動画で使っているのは[Shift+R]というリピート機能。ただしこの機能を使う場合、[Shift+D]をした後[ESC]すると[ESC]が最後の作業と見なされてしまうので、[Shift+D→ドラッグ]でなければならない。

    https://maku77.github.io/blender/ui/repeat.html

    2. 鎖に物理シミュレーションを追加[0:50~ ]

    鎖の一つを選択し、

    [Physics]→[Rigid Body]→
    [Rigid Body Collisions]→[Shape]

    を”Mesh”に設定

    Rigid Bodyを設定した鎖をアクティブにし、その他の鎖を選択する。

    [Physics]→Copy from Active

    で最初の鎖の設定を全てに反映

    3.地面を追加 [1:53~ ]

    落下したときに落ちる地面を追加する。

    [Physics]→[Rigid Body]→[Rigid Body]→[Type]→Passive

    4.ここまでの結果 [ 02:05~ ]

    5. 鎖の調整[03:00~ ]

    1.鎖を一つだけ固定する

    [Physics]→[Rigid Body]→ Dynamicのチェックを外す

    2. 鎖に球を追加

    3.重心を変更

    オブジェクトのOrigin(オレンジ色の点)がシミュレーション時にオブジェクトの重心として計算されるため、Originをオブジェクトの中心にしておく。鎖を全て選択し、

    [Ctrl + Alt + Shift + C]→ Origin to Geometry を選択

    4.傾けてシミュレーション

    1.固定されている鎖(一番上)を選択

    2.[Shift+S]→Cursor to Selected

    3.[3D Cursor]を選択

    4.全ての鎖を選択

    5.[R]で回転

    5.ここまでのアニメーション

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryのBall Pivotingを使用してみます

    まずヘッダファイルを読み込みます

    #include <vcg/complex/algorithms/create/ball_pivoting.h>
    

    次に点群を作成します。

    int X = 50;
    int Y = 50;
    
    auto itr = vcg::tri::Allocator<MyMesh>::AddVertices(mesh,X*Y);
    
    for (size_t x = 0; x < X; x++) {
      for (size_t y = 0; y < Y; y++) {
    
        double d1 = rand() % 100 / 2000.0;
        double d2 = rand() % 100 / 2000.0;
        double d3 = rand() % 100 / 7000.0;
    
        double dx = x / (double)X; // 0.0 ~ 1.0の範囲にする
        double dy = y / (double)Y;
    
        itr->P().X() = dx + d1;
        itr->P().Y() = dy + d2;
        itr->P().Z() = d3;
    
        ++itr;
    
      }
    }
    

    Ball Pivotingの実行

    double radius = 0.05;
    double clustering = 0.03;
    tri::BallPivoting<MyMesh> pivot(mesh, radius, clustering);
    pivot.BuildMesh();
    

    BPAは既に存在する点群に対して実行します。
    radiusはボール径です。radiusによって結果が大きく変わります

    VCG Library メッシュからfaceのみを削除する

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryでkdTree

    VCG Library でスムージング

    VCG Library ターゲットの周辺のオブジェクトを取得

    VCG LibraryでMeshに三角形を登録する方法

    VCG Library でポリゴンファイル保存

    VCG Libraryで色のついたポリゴンの読み込み・表示

    VCG LibのFace-FaceやEdge-Faceなどの関連付け

    VCG Library

    VCG LibraryでkdTree

    VCGで点群を検索するサンプルです。

    0. vcg/space/index/kdtree/kdtree.h をinclude

    #include <vcg/space/index/kdtree/kdtree.h>
    

    1.点群を準備

    auto itr = vcg::tri::Allocator<MyMesh>::AddVertices(mesh, 30000);
    for (size_t i = 0; i < 30000; i++) {
      double k1 = rand() / (double)RAND_MAX;
      double k2 = rand() / (double)RAND_MAX;
      double k3 = rand() / (double)RAND_MAX;
      itr[i].P() = vcg::Point3f(k1, k2, k3);
      itr[i].dist = 0.6;
    }
    

    2. 検索結果を格納する配列を定義

    // 検索して得られた頂点IDを格納する
    std::vector<unsigned int> vpid;
    
    // 検索して得られた頂点の、指定した座標からの距離を格納する
    std::vector<float> vpdst;
    

    3.kdTreeで指定した座標付近の点群を取得

    vcg::VertexConstDataWrapper<MyMesh> ww(mesh);
    vcg::KdTree<float> tree(ww);
    
    //検索する座標 p を定義
    vcg::Point3f p(0.5, 0.5, 0.5);
    
    double distance = 0.5;
    //検索
    tree.doQueryDist(p, distance, vpid, vpdst);
    

    4. 取得した点群に対して処理

    //検索して得られた頂点に、pとの二乗距離を格納(distメンバ変数は自分で定義したもの)
    for(int i = 0; i < vpid.size();i++){
      mesh.vert[ vpid[i] ].dist = vpdst[i];
    }
    

    doQueryDist


    doQueryDist(
    const VectorType& queryPoint,
    float dist,
    std::vector& points,
    std::vector& sqrareDists
    )

    SquareDistance

    距離計算に内部で使っているquaredNorm()関数の処理は、

    /// Squared euclidian normal
    inline T SquaredNorm() const
    {
      return _v[0]*_v[0] + _v[1]*_v[1] + _v[2]*_v[2] + _v[3]*_v[3];
    }
    

    となっていますので、実際の距離を知りたい場合はsqrtする必要があります。

    VCG Library メッシュからfaceのみを削除する

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryでkdTree

    VCG Library でスムージング

    VCG Library ターゲットの周辺のオブジェクトを取得

    VCG LibraryでMeshに三角形を登録する方法

    VCG Library でポリゴンファイル保存

    VCG Libraryで色のついたポリゴンの読み込み・表示

    VCG LibのFace-FaceやEdge-Faceなどの関連付け

    VCG Library


    宗教に関する簡素な考察

    HTML,CSSでliタグのオフセットが高すぎる

    HTMLはたまにしか使わないのでその度に忘れるのでメモ。

    HTMLの<ul><li></li></ul>の、liの左のオフセットが広すぎてなんとかしたいとき。liではなく、ulのpaddingを設定します

    <html>
    <head>
    <style type="text/css">
    <!--
    div.box{
      width:200px;
      height:200px;
      margin-left:50px;
      border:solid thin black;
    }
    ul{
      border:solid thin blue;
      padding-left:0px;
    }
    li{
      border:solid thin red;
    }
    -->
    </style>
    </head>
    <body>
     <div class="box">
      <p>いろは</p>
      <ul>
       <li>こんにちは</li>
       <li>こんばんわ</li>
      </ul>
     </div>
    </body>
    </html>
    

    vray for Blenderでアニメーション

    ①animation:Full Rangeを選択

    ②Renderボタンをクリック

    ③Outputで出力パスを指定