VBSでWIN32APIを利用する

VBS単体ではセキュリティリスクの都合から簡単にWIN32APIが利用できない。
そのへんを解消するフリーのライブラリを見つけたので、めも。

SFCmini

>こっちはWin32API定義がざっくり全部入りの SFCmini ラッパー
JavascriptでWin32APIが利用しやすくなる『win32api.js』

>その他
コマンドプロンプトから,Win32 APIや任意のDLLを呼び出して実行しよう (コマンドプロンプトから画面キャプチャする方法の仕組みを理解)


イケてない問題が発覚..ちょっと使いづらいな~orz

COMオブジェクト

 遥か昔にCOMちょっと勉強したけどすっかり忘れていたので、簡単なやつとかのメモ。

 COM技術自体は、比較的大きな粒度で機能を提供する時などによく利用される技術。
 「オートメーション・オブジェクト」のような表現もされるように、スクリプトからアプリケーションを自動制御する際のインターフェースにもWindowsの場合にはCOM技術が使われる。

C# で COM オブジェクトを作ってみる

[連載! とことん VC++] 第 1 回 COM 再入門 ~ COM オブジェクトの基本的利用 (COM クライアントの実装) ~

[連載! とことん VC++] 第 2 回 COM 再入門 ~ COM オブジェクトの基本的実装 ~

COM(Component Object Model)

COM オブジェクトとは

COMの基礎

COMオブジェクトとの連携

PhotoShopを呼び出しスクリプトを自動実行

めも。

PhotoShopの自動処理スクリプト JSXを作成するときの参考リンクをまとめておく

WindowsでのPhotoshop自動操作覚え書き

Adobe Photoshop CS6自動化作戦


 試したところ、http://yukimi.moemoe.gr.jpさんのページの vbスクリプトで呼び出せば COM経由でPhotoShopにスクリプトを渡せた。
 Adobeのスクリプトリファレンス(CS5)を参考にスクリプトを書いたら動作の確認も取れた。


 情報が細切れなので、ある程度読まないとなんに使えるんだか..って感じがしたけど、よく読んでみたら自動化作戦ページの内容でいけるっぽい。


 VBスクリプト経由でjavaScriptで自動実行処理を行うする際に引数渡しも併せて行う場合は、Photoshop CS5 Scripting Guideの (p.79) Running JavaScript-based Action Manager code from VBScriptを参照のこと..

正規表現で、ファイル名からフレーム数を抜き出すには

とりあえず 『(ドライブ名) (フォルダパス) (ファイル名)』とあって、
ファイル名内が『ベース名.フレーム番号.拡張子』のようになっている場合の、フレーム数の取得。

参考サイト
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions

Unityで通信対戦ゲームだと結構頑張る必要があるんだ..

面白いな~と思ったので、めも。

Unity WebGL x WebSocket で複数クライアント間の大量のオブジェクトを簡単に同期できる仕組みを作ってみた

簡単って言われても、UnityもWebGLもWebSocketも知らないんでなかなか簡単にも見えないけど…
使い方は自分の動きだけ計算してsendしとけば、あとはSynchronizerが自分のを他に投げたり、他のを受けといたりしてくれるってことかな~と。

そう考えれば、自分はsendするだけなので確かに簡単だ。

Node.js って、なんだ?

めも。

.js って付いているのでjavaScriptなのはわかるけど、まったく興味なかったので気にもしていませんでしたが、なんとなく調べたら..

サーバーサイドの技術だということが分かりました。
普通javaScriptといえば、クライアントサイド…主にwebブラウザ上で動く処理を書く場合の技術を想像してたので、へぇーと思ったり。

要は、javaScriptのように気軽にコードを記述できる言語でさくっとサーバ立てちゃおうぜ!的なコンセプトのように見えます。
今までだと、httpサーバとか専用の機能を実装した大きなプログラムをサーバ上で実行してましたが、それでは最近のいろいろな機能要求にスピーディーに対応するようなニーズに合わなくなったのではないかと…なので、基礎的な通信処理技術だけをNode.jsという形にモジュール化して、具体的な処理はなるべくコンパクトにjavaScriptであと付けで記述する…みたいな流れになっているのかな、と。

その後、Vert.x というプロダクトを知った。こっちは、Javaベースのサーバサイド技術らしい。
http://acro-engineer.hatenablog.com/entry/2013/08/10/131203

正しくないジオメトリの判断基準

 そもそも「”正しくないジオメトリ”とは、なにか」という話が先にあって、一概に “正しいもの・正しくないもの” という線引きが出来ないのですが…

 自動判定を実装しようとすると、どうしても判定基準が必要なのです。
 それでググってみたら下記のサイトが出てきた、という話。

 FIXに関しては人によるので、判定だけ参考にしたい。(機械でやっても一意に求まるようなものはFIX機能も便利だと思うけども、勝手に弄られるとどうなるか予測できないのは気持ち悪いと感じる人も居るので)

Tutorial: Bad Geometry – How to find and fix it

インスタンス化されたシェイプの判別方法

例えば、pSphereを1つ作成した上で duplicate specialで instanceを1つ作成する。
都合、pSphereが2つ。

この時、’pSphereShape1’はシーン上に2つ存在する。
名称は’pSphere1|pSphereShape1’。シーン上唯一であっても下記コマンド実行で’pSphereShape1’にはならない。

ちなみに、pSphereをもう1つ作成して、そのmeshを’pSphereShape1’にリネームしようとしてもできない。
transformをリネームすると’pSphereShape3’になるし、meshをリネームしても’pSphere3|pSphereShape1’になる。

したがって、シーン上に唯一のはずなのに『パス区切りが取れない、ノード名だけでは見付けられない』というノードがいる場合、インスタンスである可能性大。

但し、前述の’pSphere3|pSphereShape1’のようなものもインスタンスとみなしてしまうので、厳密なチェックが必要なら、こちらのサイトが参考になる。

ちなみに..
シーン上に唯一のはずなのに『パス区切りが取れない、ノード名だけでは見付けられない』というノードで、親が2つ以上存在する場合は、まずインスタンスであると断定できる。

以下のコマンドでも複数の親の存在確認は出来た。

コンパウンドアトリビュートをスカラー要素に展開したい

例えば “locator1.translate”は、アトリビュートのタイプは “double3″。
そのままだと、特にMELで面倒。スカラーで値を取らないと、getした後に分解とか、setの際に結合とかどうすんの..ってことになるので..

要素一括では、こうやればいけるけど..
実装ではdouble3向けの実装として用意しないといけないので意外と面倒。

最初からスカラー要素で扱えるなら、その方が実装が汎用的なので、できたら冗長でもまずはスカラーが欲しいなぁ..と。
かんたんに考えると、以下みたいになる。

Pythonの場合はtranslate, rotate, scale などコンパウンドの値はタプル(tuple)型で取得設定できるので、MELのように分けて考える理由がなくて便利。
※タプル型というのは、内容が固定の値で変更できない以外はリスト型と似たような扱いができるオブジェクト。『(1,2,3)』みたいな表記で扱われているもの。リストの方は『[1,2,3]』て表記。

実際にsetAttrする時は、タプルやリストの中身をスカラー要素に展開して指定しないといけない。
その点だけ忘れないようにしとく感じ。
※タプルやリストの要素の展開は、頭に『*』を付加する。

展開部分を手で書いたら、以下のようになる。

コンパウンド要素を展開したり云々したり..みたいな話は、MEL How-To #75に書かれている。

コンパウンド/マルチ要素のアトリビュートのアクセスに関して

rampノードを例にとって、colorEntryListで管理されるアトリビュートの情報取得方法メモ。

例)登録要素を最初の一個だけにしたり、色設定を変更したり。