シェイプレイヤーを作る
空のシェイプレイヤーを作成する
var comp = app.project.activeItem;
var myShapeLayer = comp.layers.addShape();
これで何も無いシェイプレイヤーができる。
この段階ではまだmyShapeLayerはただのレイヤーなのでシェイプのプロパティを指定しなければならない。
シェイププロパティのルートは[ADBE Root Vectors Group]と呼ばれるものなのでまずはこれを指定
var shapeProperty = myShapeLayer.property('ADBE Root Vectors Group');
このままでは空のコンテンツの状態なのでここに長方形パスや、パス、塗りなどの属性を追加していく
パスを追加する場合
var myShapePath = shapeProperty.addProperty('ADBE Vector Shape - Group')
これでコンテンツ直下にパスの属性が追加される
このパスにパスポイントを追加するにはnew Shape()したオブジェクトを渡す。
まずnew Shape()してShapeオブジェクトを作る
var myShape = new Shape()
ポイントは配列で作成。ただしポイント数分のxy座標なので2次元配列
配列はShapeオブジェクトのverticesプロパティに作る
myShape.vertices = [ [0,0], [100,0], [100,100], [0,100] ];
myShape.closed = true; //パスを閉じるかどうか
このShapeオブジェクトをシェイプレイヤーのパスにsetValue()する
その前にaddProperty('ADBE Vector Shape - Group')としてパスの属性をつけると
配下に
1:[ADBE Vector Shape Direction]
2:[ADBE Vector Shape]
というプロパティができる。
先のShapeオブジェクトをsetValue()するのは[ADBE Vector Shape]なので
myShapePath(2).setValue(myShape)
ということになる
これでパスが描画されたと思いきや、原点がどうやらレイヤー(コンポ?)の中心のようなので、verticesの値を付ける時は注意。
グループを追加した場合にも同じように
addProperty('ADBE Vector Group')をした時点で
[ADBE Vector Blend Mode]
[ADBE Vectors Group]
[ADBE Vector Transform Group]
が追加されているのでパスなどの属性は2番目の[ADBE Vectors Group]にaddする。
これもaddするプロパティの番号が2で決まっているので
var myGroup= shapeProperty.addProperty('ADBE Vector Group')
myGroup(2).addProperty('ADBE Vector Shape - Group')
などとする
具体的に、長方形ツールからドラッグしてcyシェイプを作った場合、以下のような構造になっている
グループが最初から付いている状態になっている
数字が付いてるのは固定されたプロパティ番号
1:[ADBE Root Vectors Group] //コンテンツ
├ [ADBE Vector Group] //長方形(という名前のグループ)
| ├ 1:[ADBE Vector Blend Mode] //横の描画モード
| ├ 2:[ADBE Vectors Group] //不可視グループ
| | [ADBE Vector Shape - Rect] //長方形パス 1
| | ├ 1:[ADBE Vector Shape Direction] //横のパスの方向ボタン
| | ├ 2:[ADBE Vector Rect Size] //サイズ
| | ├ 3:[ADBE Vector Rect Position] //位置
| | └ 4:[ADBE Vector Rect Roundness] //角丸の半径
| └ 3:[ADBE Vector Transform Group] //トランスフォーム:長方形 1
コンテンツに描画モードを追加したい場合などにはグループを作る必要があるので注意
まとめ
var comp = app.project.activeItem;
var myShapeLayer = comp.layers.addShape();
var shapeProperty = myShapeLayer.property('ADBE Root Vectors Group');
var myShapePath = shapeProperty.addProperty('ADBE Vector Shape - Group');
var myShape = new Shape()
myShape.vertices = [ [0,0], [100,0], [100,100], [0,100] ];
myShape.closed = true; //パスを閉じるかどうか
myShapePath(2).setValue(myShape);
追加出来る属性
[ADBE Vector Group] //空のグループ
------------------------------------------------
[ADBE Vector Shape - Rect] //長方形
[ADBE Vector Shape - Ellipse] //楕円形
[ADBE Vector Shape - Star] //多角形
[ADBE Vector Shape - Group] //パス
------------------------------------------------
[ADBE Vector Graphic - Fill] //塗り
[ADBE Vector Graphic - Stroke] //線
[ADBE Vector Graphic - G-Fill] //グラデーションの塗り
[ADBE Vector Graphic - G-Stroke] //グラデーションの線
------------------------------------------------
[ADBE Vector Filter - Merge] //パスを結合
[ADBE Vector Filter - Offset] //パスのオフセット
[ADBE Vector Filter - PB] //パンク・膨張
[ADBE Vector Filter - Repeater] //リピーター
[ADBE Vector Filter - RC] //角を丸くする
[ADBE Vector Filter - Trim] //パスのトリミング
[ADBE Vector Filter - Twist] //旋回
[ADBE Vector Filter - Roughen] //パスのウィグル
[ADBE Vector Filter - Wiggler] //トランスフォームのウィグル
[ADBE Vector Filter - Zigzag] //ジグザグ