« 2009年5月 | トップページ | 2009年7月 »

2009年6月

C4D XZ平面のスプラインを基に、XPressoで坂道ポリゴンオブジェクトを整形させてみました。

前回、スプラインに勾配を付けましたが、今回は、スプラインを加工せずXPressoでポリゴンオブジェクトを整形しています。

ただし、エラー処理等を施していないので、C4Dが強制終了する場合があります。
シーンファイルを開く前に大切なファイルは、保存の事…

Sakamichi

続きを読む "C4D XZ平面のスプラインを基に、XPressoで坂道ポリゴンオブジェクトを整形させてみました。"

|

C4D 座標マネージャ等の入力の単位を表示させていますか?単位の表示のOn/Offスクリプトです。

座標マネージャ等の入力には単位が表示されています。

この表示のOn/Offは、編集メニューの「一般設定...」の「単位」の項目の「単位を表示」で切り替えられます。

Snaptool_08 Snaptool_04 Snaptool_09

では、これをスクリプトで切り替えるには…

続きを読む "C4D 座標マネージャ等の入力の単位を表示させていますか?単位の表示のOn/Offスクリプトです。"

|

C4D C.O.F.F.E.E. スナップツール

ポイントの操作をしている時に、スナップ機能をOn/Offの切り替えをするよね…
そんな時、キーボードの 'P' を押すと…

Snaptool_01

メニューが出てくるのだけど…

1回クリックすると消えちゃうんだよね…
例えば、ポイントと軸にスナップさせたければ…
'P'押してポイント…
'P'押して軸…

2回も 'P' を押して…面倒臭いのだ…

この際だから、C.O.F.F.E.E.で何とかしようと…

続きを読む "C4D C.O.F.F.E.E. スナップツール"

|

C4D C.O.F.F.E.E. スプラインのポイント間の長さが取得できるようになったので、ベジェスプラインに勾配を付けてみる。

さて、ベジェスプラインに勾配?
わかりやすく言えば、坂道です。

ベジェスプラインの始点から終点までを、一定の傾斜になるようにします。

続きを読む "C4D C.O.F.F.E.E. スプラインのポイント間の長さが取得できるようになったので、ベジェスプラインに勾配を付けてみる。"

|

C4D C.O.F.F.E.E. 前回作成したスプラインのポイント間の長さを取得する関数の修正。

前回作成した、スプラインのポイント間の長さを取得する関数を修正します。

この関数は…
セグメントが無い、開いたBスプライン以外のスプラインが対象でした。
今回は、スプラインの開閉に対応します。

続きを読む "C4D C.O.F.F.E.E. 前回作成したスプラインのポイント間の長さを取得する関数の修正。"

|

C4D C.O.F.F.E.E.SendModelingCommand()「始点の設定」

SendModelingCommand()での「始点の設定」のメモ

続きを読む "C4D C.O.F.F.E.E.SendModelingCommand()「始点の設定」"

|

C4D C.O.F.F.E.E. スプラインのポイント間の長さって?

C.O.F.F.E.E.でスプラインの長さを取得するには、SplineObjectクラスのGetLength()メンバ関数を使うのですが…
GetLength()メンバ関数はセグメント毎の長さを取得できます。
スプラインの全長を取得するならば、全セグメントの長さを求めて、その総和を出せば良いのだ。

Length_03_2

では、ポイント間の長さを取得するにはどうするんだろうか?
スプラインには、ご存知の通り色々な種類があります。
必要なスプラインの事を学習し数式を理解し、スプラインの補間の仕方を習得すれば簡単に求められます。

では、知らない人や、数学が苦手な人は半永久的に求められないのだろうか?

続きを読む "C4D C.O.F.F.E.E. スプラインのポイント間の長さって?"

|

C4D C.O.F.F.E.E. SendModelingCommand()とCallCommand()。どっちを使う?

CallCommand()は、コマンドマネージャからスクリプトマネージャエクスプレッションエディタコマンドラインにドラッグ&ドロップでID付で自動記述され簡単に使えます。
なんて便利なんだ…以前のバージョンは手打ちだけに…
「CallCommand()ぐらい、手打ちでも苦ではないだろう。」そう言いたい人もいると思いますが…
コマンドマネージャにある大量ツールが、気軽に使える…

では、SendModelingCommand()の方はというと、コマンドIDをSDKから…
コマンドオプションを使わなくても、カラのコンテナを用意して…
ポイント/ポリゴンモードを設定して…
CallCommand()より少し手間がかかり手軽では、ないのだ。
しかも、コマンドIDが見当たらなければ、使いたいツールが使えない…

じゃぁコマンドオプションを使わなければ、CallCommand()だけで十分だろうか?

続きを読む "C4D C.O.F.F.E.E. SendModelingCommand()とCallCommand()。どっちを使う?"

|

C4D C.O.F.F.E.E. SendModelingCommand()でポイントやポリゴンを削除する。

これも、ネタではありません。
メモ程度です。

続きを読む "C4D C.O.F.F.E.E. SendModelingCommand()でポイントやポリゴンを削除する。"

|

C4D 「分離」ツール、SendModelingCommand()では?

ごめんなさい、ネタではありません。
メモ代わりに使いました。

続きを読む "C4D 「分離」ツール、SendModelingCommand()では?"

|

C4D C.O.F.F.E.E. SendModelingCommand()/CallCommand()実行前にクラスチェック?

さて、CallCommand()を使う場合、コマンドマネージャでツール名を検索し、該当のツールをスクリプトマネージャにドラッグ&ドロップするわけですね。
そうすると、「CallCommand(xxxx)」と、IDまで自動記述してくれますね。

では、ポリゴンオブジェクトやスプラインオブジェクト専用のコマンドを、別のクラスのオブジェクトに実行するとどうなるのか?

続きを読む "C4D C.O.F.F.E.E. SendModelingCommand()/CallCommand()実行前にクラスチェック?"

|

C4D C.O.F.F.E.E. Noiseクラスを使ってみる。

さて、Noiseクラスを使ってみよう。
Fbm等は、少し学習してからになりますが、NoiseやTurbulenceなら何とか使えそうです。

今回は、Noise()メンバ関数を使ってみます。
Turbulanceはオクターブがありますが、大差ありません。

続きを読む "C4D C.O.F.F.E.E. Noiseクラスを使ってみる。"

|

C4D C.O.F.F.E.E. ランダム値の取得の為のRandomクラスに似たNoiseクラスを使ってみる。

Randomクラスに似たNoiseクラス…とは言っても違う物なのだ。

続きを読む "C4D C.O.F.F.E.E. ランダム値の取得の為のRandomクラスに似たNoiseクラスを使ってみる。"

|

C4D ユーザスクリプトをR9とR10以降に対応させる…

前回のポイントやポリゴンをランラムに選択するユーザスクリプトは、C4D R10以上対応とC4D R9対応を2種類用意しました。

これを1つのユーザスクリプトで対応させるには…?

GetC4DVersion()を使うとC4Dのバージョンを取得できますが…

続きを読む "C4D ユーザスクリプトをR9とR10以降に対応させる…"

|

C4D ポイントやポリゴンをランダム選択するユーザスクリプト。R10 & R9

前回のスクリプトは、ポリゴンオブジェクトのみにしか対応していませんでしたが、スプラインにも対応させました。

C4D R10タイプのスクリプト

「PointRandomSelect.ZIP」

試しに artist side に投稿してみました。

ただしSDK R11なので、C4D R10以降対応だろうか?
R9は非対応…
R9は、この記事の後半です。

続きを読む "C4D ポイントやポリゴンをランダム選択するユーザスクリプト。R10 & R9"

|

C4D C.O.F.F.E.E. Randomクラスを使ってポリゴンやポイントをランダムに選択する。

さて、ポリゴンやポイントをランダムに選択すには、どうしますか?
もっとも簡単な方法は、2種類あります。

続きを読む "C4D C.O.F.F.E.E. Randomクラスを使ってポリゴンやポイントをランダムに選択する。"

|

お詫び

お詫びです。

最近、C.O.F.F.E.E.コードを直接ブログに打ち込んでから、C4Dへペーストして確認しています。
一応、全て確認はしているつもりなのですが、確認作業からこぼれたコードあるかも知れません。
本来、自分でする作業なのですが、万が一動作確認ができていないコードがありましたらご連絡ください。

|

C4D C.O.F.F.E.E.のRandomクラスのガウス分布の確認。

C.O.F.F.E.E.のRandomクラスのGetG11()メンバ関数のガウス分布を確認します。

続きを読む "C4D C.O.F.F.E.E.のRandomクラスのガウス分布の確認。"

|

C4D C.O.F.F.E.E.Randomクラスを使ってポリゴンオブジェクトを変形させる。

変形させると言っても、「デフォーマオブジェクト」ではなく、「ポイントの位置を設定」に似ています。

続きを読む "C4D C.O.F.F.E.E.Randomクラスを使ってポリゴンオブジェクトを変形させる。"

|

ただの暇つぶし…

暇じゃないんだけど…

続きを読む "ただの暇つぶし…"

|

C4D C.O.F.F.E.E.前回の四角ポリゴンの法線を求める関数を結果から比較してみる。

四角ポリゴンを分割した三角形の法線と面積比から求める関数。
頂点付近の4つの法線ベクトルから求める。
対角線から求める。

この3つの関数から実際にポリゴンの法線を求めて見ます。

続きを読む "C4D C.O.F.F.E.E.前回の四角ポリゴンの法線を求める関数を結果から比較してみる。"

|

C4D C.O.F.F.E.E.で四角ポリゴンの法線を求める方法を考える。

三角ポリゴンの法線は、深く考えなくても求めることができました。
では四角ポリゴンは、どうするのだろうか。

2個の三角ポリゴンに分解して求めるのか?

続きを読む "C4D C.O.F.F.E.E.で四角ポリゴンの法線を求める方法を考える。"

|

C4D 方向を示す複数のベクトルの平均?

方向を示すベクトル。
方向のみを示すベクトルは、普通、正規化され単位ベクトル(長さが1.0のベクトル)になっている事が多いことでしょう。
ポリゴンの面の向きを示す法線ベクトルなどがそうですね。

この方向を示すベクトル。複数を示す平均の方向を考えてみよう。

この事は、複数のポリゴンに囲まれたポイントの法線(頂点法線ベクトル)や…
複数のポリゴンが向いている、平均的な方向を取得したい場合に使えるでしょう…

続きを読む "C4D 方向を示す複数のベクトルの平均?"

|

C4D C.O.F.F.E.E. 2つのベクトルに垂直なベクトルを返すvcross()関数の返すベクトル。

前回、三角ポリゴンの法線を求めるために使用した、vcross()関数。

Normal_2

この、v1とv2が作る角度が無い場合。
要するに、0°や180°。それとv1やv2がvector(0.0 , 0.0 , 0.0)の場合はどうなるだろうか?

続きを読む "C4D C.O.F.F.E.E. 2つのベクトルに垂直なベクトルを返すvcross()関数の返すベクトル。"

|

C4D C.O.F.F.E.E.で三角ポリゴンの法線の取得。

残念ながら、C.O.F.F.E.E.にはポリゴンの法線を取得する関数はありません。
法線が必要な場合は算出します。

ところで、ポリゴンの法線とは…
3DCGに携わっている方には、説明する必要はないですね。
「ポリゴンに直交する正規化されたベクトル」、「ポリゴンに直交する単位ベクトル」ですね…
と言う事は…
ポリゴンに直交していても、正規化していなく単位ベクトルでなければポリゴンの法線ではないと言うことだろうか?

続きを読む "C4D C.O.F.F.E.E.で三角ポリゴンの法線の取得。"

|

C4DのC.O.F.F.E.E.のPointLineDistance()関数を使って、ポリゴンの面積を求めてみる

前回は、「ヘロンの公式」を使いましたが、今回はC4DのC.O.F.F.E.E.[Math Function]のPointLineDistance()関数を使ってみます。

続きを読む "C4DのC.O.F.F.E.E.のPointLineDistance()関数を使って、ポリゴンの面積を求めてみる"

|

C4DのC.O.F.F.E.E.で「ヘロンの公式」を使って、ポリゴンの面積を求めてみる

おいおい、ポリゴンの面積なんて計算する必要があるのかい?
「最近のあんたは、的外れなことをしてないかい?」そう言われてしまいそうだが…

ま、このブログは最初から、的外れだから問題ないだろう…

では、面積を求めます。

「ヘロンの公式」
三角形の三辺abcの長さから面積を求める公式です。

Heron_01

ただし s は三辺の長さの総和の1/2

Heron_02

これを使ってみよう。
数学が苦手でも、3辺の長ささえわかれば、特別な計算をしなくても面積が求めることができます。

続きを読む "C4DのC.O.F.F.E.E.で「ヘロンの公式」を使って、ポリゴンの面積を求めてみる"

|

StudioMOMO「C.O.F.F.E.E.でバッチレンダリング」…

C4Dの「レンダリング」メニューの「バッチレンダリング...」をCallCommand()で呼ぶと、既にファイルパスが設定された常態ね…

正直、自分にもわかりません…

SDKは一通り目を通したつもりなのですが、最近の自分の目は節穴なので見落としているかもしれません…

続きを読む "StudioMOMO「C.O.F.F.E.E.でバッチレンダリング」…"

|

C4D 新たに、ポリゴンオブジェクトを一体化するスクリプトを作ってみよう。

新たに…
複数のポリゴンオブジェクトを一体化すると、一体化される前のオブジェクトの範囲が、わからなくなるよね…
分かり辛い言い回しか…

例えばオブジェクトA,B,Cを一体化すると、どこまでがAで、どこまでがBだったか。Cはどこまで?という事になる。

これを解決するには、一体化する前に、ABCそれぞれの全てのポリゴンを選択して、選択範囲に記録してから一体化すると、記録に残るわけだよね。

では、そんなスクリプトを簡単に組んでみよう。

続きを読む "C4D 新たに、ポリゴンオブジェクトを一体化するスクリプトを作ってみよう。"

|

C4D テキストダイアログ

テキストダイアログを自ら使った事は無いんだよね。
まだまだC.O.F.F.E.E.の使い込みが甘いのか…

処理の失敗のメッセージやメモリの確保の失敗をコンソールに表示させるのではなく、こんな風にテキストダイアログに表示させれば良いんだね。

Textdialog_12

でも、一々OKボタンを押させられるのは、鬱陶しくないですか?

例えば、選択されたオブジェクトに何か処理するスクリプトで、オブジェクトを選択しないで実行したら「オブジェクトが選択されていません」「OK」なんて出てきたら…

ま、その前にメニューの状態で弾かれる様にしないとね。

このテキストダイアログを使うにも、センスが問われそうですね。

続きを読む "C4D テキストダイアログ"

|

C4D C.O.F.F.E.E.でポリゴンの座標を算出する関数について、考えてみる

任意のオブジェクトにヌルオブジェクトを配置するスクリプト関連の記事を読んでいただいたC.O.F.F.E.E.の学習を始めたばかりの方へ、ありがとうございます。
スクリプト自体は実用的ではないのですが、複数選択されたオブジェクトの簡単な処理がわかっていただけたと思います。

ただし、関数を作らずmain()関数のみで組んであります。

なぜ村人とC4Dでは、関数をあまり使わないのかは、後ほど…
関数を作る能力が無いから…が第一の理由。ま、もっと重要な事があるんですけどね。

では、このスクリプトの中で、ポリゴンの座標を算出する部分があります。
ここを関数にすると、他のスクリプトに関数をコピペすると簡単に使うことができますね。

では、ポリゴンの座標を算出する関数を考えてみよう。

続きを読む "C4D C.O.F.F.E.E.でポリゴンの座標を算出する関数について、考えてみる"

|

« 2009年5月 | トップページ | 2009年7月 »