アクセスカウンター
アメリカンイーグルスズキ自動車http://www.e-creditcard.info/アクセスカウンターネオサイトワンデー

1月27日

ユニコード
ユニコードとなっている文字列を複数、変数に代入しprintするとコードになってprintされ日本語として表示してくれない。

そのときはユニコードの文字列が入っている変数をfor文で回すといい。

japanese = u'あああ', u'いいい', u'ううう', u'えええ'
print japanese
結果
(u'\u3042\u3042\u3042', u'\u3044\u3044\u3044', u'\u3046\u3046\u3046', u'\u3048\u3048\u3048')


japanese = u'あああ', u'いいい', u'ううう', u'えええ'
for j in japanese:
print j
結果
あああ
いいい
ううう
えええ

となる。

●conditionを使ったコントローラー
窓などのコントローラーで、Transparencyを制御しその値が1(完全に見えないがジオメトリ事態はShowの状態)になったときに、モデルをHideする方法。
(0〜0.9はモデルはShowで、1になったらmodelのvisibilityをHideに切り替える)

1、コントローラーにTransparencyを制御するアトリビュートを追加する。minは0、max1にするとTransparencyも0〜1の値で制御しているので、連携がとりやすい。

2、モデルのシェーダーのTransparencyと(1)で作成したアトリビュートをコネクションする。

3、createNode condition;
でconditionを作成

4、コントローラーの(1)のアトリビュートと(3)で作成したconditionをコネクト。
コントローラーの(1)のアトリビュート→condition.farstTeam

5、conditionのsecondTeamとcolor if Falseの値を1にし、color if Trueの値を0にする。

6、condition.outColorR→model.visibility
をコネクト

●条件演算式

条件演算式 (しばしば、”三項演算子” と呼ばれます) は最も優先度が低いPython の操作。
x if C else y という式は最初に条件 C (x では ありません) を評価します; C が true の場合 x が評価され値が返されます; それ以外の場合には y が評価され返されます。

import maya.cmds as cmds

eng = True
'AAA' if eng else u'あああ'

engの変数の中にTrueを代入
条件であるengがTrueかFalseかを評価し、Trueであれば'AAA'を評価し、Falseであればu'あああ'を評価する。
この書き方ではTrueかFalseしか条件として定めることが出来ない式になっている。

import maya.cmds as cmds
en = True
def english( moji ):
if moji == 'window': return 'aaa' if en else u'あああ'
elif moji == 'text': return 'bbb' if en else u'いいい'
elif moji == 'check': return 'ccc' if en else u'ううう'

english( 'check' )

enにTrueを代入
englishの関数の中のmojiという変数を設定できるようになっている。
もし、mojiの中に'window'という文字列が入っていれば、後ろの文を実行し、なければ下の条件に当てはまるか評価していく。
また、mojiの中に'window'という文字列が入っていればenがTrueの時は'aaa'を評価し、Falseのときは'あああ'を評価する。
if
else
else
の形にしておくと、3つの文がひとつの塊として見られるので
if
if
if
のような形(3つすべて評価する)より若干軽くなる。
それはもし、if文を実行中に当てはまる式があればif文の最後まで評価しなくて済む。しかし、後者のような式は3つすべてのif文を評価するので、途中当てはまる式があってもif文すべてを評価しなければならないような書き方になっている。

前者と後者は条件によって使い分けるといい。


●ディレクトリの追加

import sys
sys.path.append('F:\RIGGER\sutatesu')

これで見に行ってもらうディレクトリを追加します。

sys.path

パイソンパスパイソンの必要なモジュールを読むパス。
配列順に読み込むので、appendで追加したパスは一番優先順位が低い。
インサート(配列の0番目に追加)で追加すると一番優先順位が高くなるが、名前がかぶっていると変なことになるかもしれないので、やる場合は命名の付け方に気をつける。


●closestPointOnSurface

closestPointOnSurfaceは一番近い、サーフェス上のUV座標を求めることが出来る。
アトリビュートの parametarU,parametarU で数値として出力される。

closestPointOnSurfaceのノードを作成
サーフェスのworldSurfaceとclosestPointOnSurfaceのinputSurface
をコネクト

ある点に一番近いサーフェス上の点を求める
ある点から NURBS サーフェス上の最も近い点の座標を求める方法。

closestPointOnSurface ノードを作成

サーフェスのworldSurfaceをclosestPointOnSurfaceのinputSurface にコネクト

オブジェクトのtranslateやポイントの座標を closestPointOnSurfaceのinPositionにコネクト

closestPointOnSurfaceのpositionアトリビュートに求める点の座標が入っている