日々適当

hibitekitou

マテリアルを作った時のシェーダーの名前

xsi |2012-12-11
例えば、SI 2012 SAPで

oObj = Application.Selection(0)
oMat = oObj.AddMaterial("Phong",False,"NewMaterial")

とかをオブジェクトを選択の上、実行すると、NewMaterialって名前のマテリアルが作成されて選択されたオブジェクトに適用されます。問題は、適用されたPhongシェーダーの名前です。



Phongシェーダーノードの名前までNewMaterialになりやがっております。もちろんこの方が気付いていないはずも無く、バグだということです [Junki The Junkie's Junkyard]。
ってことで、昔書いたスクリプトはですね。例えばそのPhongシェーダーのノードにテクスチャを繋ぐ時、

app = Application
oObj = app.Selection(0)
oMat = oObj.AddMaterial("Phong",False,"NewMaterial")
app.CreateShaderFromProgID("Softimage.txt2d-image-explicit.1.0", oMat.FullName, "Image")
app.SIConnectShaderToCnxPoint(oMat.FullName + ".Image.out", oMat.FullName + "." + oMat.Name +".diffuse", False)
# app.SIConnectShaderToCnxPoint(oMat.FullName + ".Image.out", oMat.FullName + ".Phong.diffuse", False)

とかアホなかき方をしていたんです。つまり、シェーダーの名前がマテリアルの名前と一緒だから、シェーダーをマテリアルの名前で直接指定していたわけですな。だから2013でこのバグが直ったらしく、



上のスクリプトのコメントアウトした方を使えば動くような事になっており、結果として昔書いたスクリプトが動かなくなってですね、しかしいかんせん昔書いたものだから解決に難儀しました。

しかし、こーいうシェーダ間のネットワークを繋ぐ時、どう書くべきなのか、よく分かっていないのですよねー。
例えばこんな感じ?

app = Application
oObj = app.Selection(0)
oMat = oObj.AddMaterial("Phong",False,"NewMaterial")
surface = oMat.Parameters("surface")

diffuse = surface.NestedObjects(0).Parameters("diffuse")
diffuse.ConnectFromProgID("Softimage.txt2d-image-explicit.1")
tex = diffuse.NestedObjects("Image").Parameters("tex")

oImageClip = app.CreateImageClip( "C:\\Program Files\\Autodesk\\Softimage 2012.SAP\\Data\\XSI_SAMPLES\\Pictures\\xsilogo.pic", "XSILogo" )

tex.Connect(oImageClip)
コメント ( 0 )|Trackback ( )

コンビニのホットドリンク

与太話 |2012-12-11
コンビニで飲み物を買う時、ホットドリンクに手を伸ばす季節です。
僕が普段利用しているコンビニは、FにSにLにTなのですけど、いずれも食品類を並べている棚と同じ形状の棚に熱源を仕込んでその上にペットボトルや缶を並べて温める形式を採用しています。
ところが、そこの設定温度がコンビニによってまちまちなんですな。

あたたか~い飲み物ということで期待するのは、個人的には、手に持ち続けることが出来ないくらいの温度になっていることです。しかし、その辺クレームがつくからか節電からかは知らないけど、多くのコンビニではそんな状態になっておりません。特にFなんかはぬるいというかなまあたたかいレベルの温度で売られているように思います。SもTもそこまで温度は低くないのだけど、ぬるい。それに対してLの温度の高さは特質すべきものがあるのですよ。求めている温度に一番近い。

どちらかというとLは当たり前の「あたたか~い飲み物」の温度を実現しているだけのように思うのだけど、それが素晴らしいと思えるぐらい、他のコンビニの温度にはがっかりしている今日この頃なのですな。
まぁ電力事情がひっ迫している現在ですから、節電ということなら仕方ないとは思いますけど、そうならそう書いておいてくれないと、誤解しちゃうよ、僕は(^^) 駄目なコンビニだなと。

注:あくまでも僕の行動半以内にあるコンビニでの感想です。
コメント ( 2 )|Trackback ( )

Photoshopのこの仕様、どうにかならんか

mac |2012-12-07
Photoshopに限らず、Mac上でのセーブダイアログにおいて、表示されている既存のファイルをクリックすると、保存名がそのクリックしたファイルのものになりますよね。



この図はPhotoshopのものですけど、既存のファイル(1)をクリックすると、保存名(2)がクリックした既存のファイルと同じになってます。しかして問題はそのフォーマット(3)です。保存名に入っているファイル名の拡張子はjpgなのに、フォーマットはTIFFになっている。これは保存しようとしているファイルのフォーマットがTIFFなのにたいし、クリックした既存のファイルがJPEGファイルだからで、動作としては特に問題ないように見えます。
しかし、このまま保存ボタンを押すと拡張子jpgのままで保存されちゃうんですよね。

だから拡張子をファイルフォーマットに準じたtifにしたいのなら、セーブダイアログ内で自分で書き換えるか、「フォーマット」のポップアップメニューからTIFF以外をいったん選び、またTIFFを選び直すという作業をします。後者の場合これで拡張子がtifに書き変わります。

これ非常に迷惑な仕様でして、上述した通り、時に間違った拡張子で保存しかねず、トラブルの元になります。
ってことで、拡張子を自動で付け替えるか、既存ファイルをクリックした時に入る名前から拡張子を取り除くかして欲しいなぁとここ何年か思っております。後者の場合、保存を実行した段階で自動的に拡張子が追加される形でよろしく。

それとも何処か設定が足りてないのかな?
コメント ( 0 )|Trackback ( )

VideoTextureで2つのムービーをテクスチャとして貼付けた

cg |2012-12-04
Blenderにて2つのムービーをテクスチャとしてはりつけ、ゲームモードにてムービーを再生する方法。
こちら [blenderartists.org] を参考に、やってみた。

2つのポリゴンで構成されたオブジェクトにそれぞれのポリゴンにUVを設定し、それぞれにマテリアルを設定し、それぞれにテクスチャを設定してます。



マテリアルは片方にはvideo、もう片方にはvideoBと名付けています。



この状態で、Logic Editorの内容をこんな感じに設定しています。
ActuatorsのSoundで指定しているファイルは、この後のスクリプトで設定しているムービーファイルの1つと同じファイルです。



ControllersでPythonを設定して、Modulの内容を video.init_worldやvideo.update としているのは video.pyというファイルにinit_world()やupdate()関数を用意しているからでして、Text Editor上でこんな感じにスクリプトを記述しました。



import GameLogic as G
import VideoTexture as VT

def init_world():
	ctrl = G.getCurrentController()
	obj = ctrl.owner
	
	if not hasattr(G, 'video0'):
		matID0 = VT.materialID(obj,"MAvideo")
		matID1 = VT.materialID(obj,"MAvideoB")
		G.video0 = VT.Texture(obj, matID0)
		G.video1 = VT.Texture(obj, matID1)
		
		S1 = G.expandPath("//byousoku.mov")
		S2 = G.expandPath("//byousokuB.mov")
		
		G.video0.source =  VT.VideoFFmpeg(S1)
		G.video0.source.repeat = -1
		G.video0.source.scale = True
		G.video0.source.flip = True
		
		G.video0.source.play()
		
		G.video1.source =  VT.VideoFFmpeg(S2)
		G.video1.source.repeat = -1
		G.video1.source.scale = True
		G.video1.source.flip = True
		
		G.video1.source.play()
		
		sound = ctrl.actuators["a_sound"]
		ctrl.activate(sound)
		G.sound = sound
	
 
def update():
	if hasattr(G, 'video0'):
		G.video0.refresh(True, G.sound.time)
		G.video1.refresh(True, G.sound.time)


こんな感じです。

Pキーを押して再生するとこんな感じで無事ムービーが流れました。
たぶん、音の時間で2つのムービーの時間は同期しているんだろうと思います。



とりあえず、メモでした。
なんでこんな事やってんだろw Blender、わけわかんねぇよ。

<追記>
うがっ、再生したらムービーが途中で止まる…。
コメント ( 0 )|Trackback ( )

iTunes 11 が来ましたね

mac |2012-12-01


大きくGUIを変更してきたiTunes 11。以前のようなインターフェース [Macお宝鑑定団 blog(羅針盤)] にある程度戻すことができるようですけど、基本、フルスクリーンで運用するようなシンプルな構造になっています。



アルバムアートをクリックするとそのアルバムの詳細が表示されるってのは曲をブラウズするモードになっている時は楽しいです。そのかわり曲の情報はアルバムアート含め、しっかりと管理しておかないとですね。
そこから、



この機能は気に入りました。実際に利用する機会は僕には少ないと思うのですけど、できると出来ないとでは大違いです。プレイリストを作る時もここから追加していく事が出来ます。ドバッとまとめて放り込む時にはこのUIは不便なのですけど、その時はサイドバーを表示させて対応なんすかね。
リスト表示じゃない時の表示順はメニューバーから変更する項目がありました。



個人的には割といいんじゃないかって思います。そのかわり、今までの考え方とはちょっと変えないといけない部分は深く使っていたほどおそらくストレスかもですね。幸い、僕は全然てきとーに使っていたのでけっこう気に入っています。

それにしてもカバーフローを無くしてきたのには驚きますね。AppleのUIの顔的な扱いになっていたものをこうもあっさり捨ててくるとは、です。
コメント ( 0 )|Trackback ( )

iMacが販売開始

mac |2012-12-01
21.5インチモデルだけではありますが予告通り11月中に販売開始されまして、いろいろと情報が上がってきております。

「iMac (Late 2012) 21.5インチ」のGeekbenchのベンチマークスコア [気になる、記になる…]

こちらに掲載された数値を見ると、お、シングルコアのMac Proに迫ってますねーって感じになってます。
単純にクロック周波数分だけ速度が上がると仮定するなら、27インチモデルのもっとも高いスペックのマシン(3.4GHz)ですと、13651という数字が予想されます。Mac Pro Mid 2010の6Coreモデルが13743ということですから、Mac Proの厳しい状況がますます際立って来ていることが分かるというものです。

iMacに採用されているCPUはIvy Bridgeの3330S(2.7GHz)、3470S(2.9GHz)、3770S(3.1GHz)、3470(3.2GHz)、3770(3.4GHz)と予想されます。つまり、iMacのフラッグシップモデルは…なんだ、僕が持っているPC [日々適当] と同じじゃないですか。
って事は、単純にレンダリング等のCPUを使った計算速度ではまだiMacはMac Proの敵じゃないってことっすな(微妙ですけどねー)。
ただし、そこにも書きましたけど、そのPCのお値段は半年前で10万程度。iMacですと20万ほどします。単純に値段だけ見ちゃうとiMacはちょっときついかもしれませんね。

もっとも、スペックだけでは無い魅力(高品位な筐体、たぶん高品質なディスプレイ、たぶん省スペース、何よりOS Xが稼働)がiMacにはあるわけで、正直僕が持っているPCはうるせーってことでここ3ヶ月ぐらい火を入れてないしw、そんな意味では(僕の中では)比較対象としてはお話にならないんですな。

ともあれ、まずはiMacの出荷はとてもめでたいです(このiMacの発表以降、iMacを購入できなくなっていて、困っていた所も多々あるでしょうし)。
コメント ( 0 )|Trackback ( )
  ・次ページ »