:::: MENU ::::

C.a.T!

CATch a TAIL!

Japanese sub culture and tech.

  • 2009/05/11
  • 0
flash

マクロスFのシェリルのCGっぽいのをFlashで書く

f:id:clover-leaf:20090511021420j:image

こういうやつ。

ライブシーンとかでたまに出てくる映像エフェクト。

なんかカッコいいよねぇ。

これをPaperVision3Dで、基本的なところを書くとこんな感じ。

SherylEffect (要FlashPlayer10)

ソースはこんな感じ。

package {
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.events.Event;
import org.papervision3d.core.math.NumberUV;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
[SWF(width="800", height="500",backgroundColor="0x000000")]
public class SherylEffect extends BasicView {
private static var NUM_FACES_W:uint = 10;
private static var NUM_FACES_H:uint = 10;
private var basePlane:DisplayObject3D;
private var texture:BitmapFileMaterial;
private var sizeW:Number;
private var sizeH:Number;
private var planes:Array;
public function SherylEffect() {
super(0,0,true,true,"Target");
init();
}
private function init():void {
stage.frameRate = 60;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.quality = StageQuality.MEDIUM;
camera.x = 0;
camera.y = 0;
camera.z = -1200;
camera.fov = 35;
this.basePlane = new DisplayObject3D();
scene.addChild(this.basePlane);
createFaces();
startRendering();
}
override protected function onRenderTick(event:Event=null):void {
this.basePlane.yaw(1);
if (this.planes.length == NUM_FACES_W * NUM_FACES_H) {
movePlanes();
}
super.onRenderTick(event);
}
private function movePlanes():void {
for (var i:uint = 0; i < NUM_FACES_H; i++) {
for (var j:uint = 0; j < NUM_FACES_W; j++) {
var plane:Plane = this.planes[i * NUM_FACES_W + j];
plane.x = (this.sizeW + .2 * Math.abs(this.basePlane.rotationY) * j;
plane.y = (this.sizeH + .2 * Math.abs(this.basePlane.rotationY) - texture.bitmap.height / 2) * i;
}
}
}
private function createFaces():void {
this.texture = new BitmapFileMaterial("penpen.png");
texture.doubleSided = true;
this.planes = new Array();
BitmapFileMaterial.callback = onLoadTexture;
}
private function onLoadTexture():void {
this.sizeW = texture.bitmap.width / NUM_FACES_W;
this.sizeH = texture.bitmap.height / NUM_FACES_H;
for (var i:uint = 0; i < NUM_FACES_H; i++) {
for (var j:uint = 0; j < NUM_FACES_W; j++) {
var plane:Plane = new Plane(texture, this.sizeW, this.sizeH);
this.basePlane.addChild(plane);
plane.x = this.sizeW * j;
plane.y = this.sizeH * i - texture.bitmap.height / 2;
plane.z = 0;
plane.geometry.faces[0].uv = [new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * i / texture.bitmap.height),
new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * i / texture.bitmap.height),
new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height)];
plane.geometry.faces[1].uv = [new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height),
new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height),
new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * i / texture.bitmap.height)];
this.planes.push(plane);
}
}
}
}
}

ポイントは、後半のonLoadTextureでグルグルfor分で回しているところです。

テクスチャとして使うpenpen.pngを分割して、個別のPlaneオブジェクトに貼りつけています。

plane.geometry.faces[0].uvが1枚の四角のうち左下半分を、plane.geometry.faces[1].uvが右上半分のポリゴンを表現します。

ここで指定しているNumberUVの配列は、左下半分のポリゴンが、左下, 右下, 左上、右上半分のポリゴンが、右上, 左上, 右下のポイントを指定しています。

これは、0から1までの値で表現するため、全部テクスチャのサイズで割ります。

これを分割数分ぐるぐる回して、テクスチャをざくざく分割しちゃいます。

んで、movePlanesで書いているように、フレーム毎にそれぞれのPlaneをplane.x、plane.yプロパティを調整してちょっとずつづらすと、分割したテクスチャがばらけてそれっぽいエフェクトになります。

z位置も調整するとよりそれっぽい動きになると思います。

こういう整然と動くエフェクトって単純だけど好き。

なんかカッコいいよねぇ。

  • 2009/05/10
  • 0
misc

京都を歩きまわった

f:id:clover-leaf:20090511015258p:image

実家に帰ったときに友人のお誘いで坊主と京都中を歩きまわった。

各お寺を次々に回っていく行。

実際は、昼間と深夜ずっと歩くのだけど、さすがに無理なので昼間の一部のみ同行させてもらいました。

自分は、無宗教な人間なので行自体に感じるところはないのだけど、回っている間にいろいろ発見はあった。

びっくりしたのが、かなりたくさんの人たちが坊主におがんでもらうためにわざわざ出てくること。

東京ではまず見かけない風景だと思う。

なんというか、尊う気持というのは普段の生活ではなかなか出てこない。

そういうの、ストレートに「ごくろうさまです。」という一言で表わせるんだ。

ただ、やっぱり声をかけてくれるのはご老人が多い。

京都でもこういうことってなくなっていくんだろう。

なんとも寂しいはなしだなぁ。

SNSとかコミュニケーションの形が変わるのは仕方がないけど、人に対する気持ち自体が希薄になっているのが残念というか危険というか。

機械化されていく感じ?

とか、ちょっと普段考えないようなことを考えるような体験でした。

雨でなかなかハードだったけど、面白い経験でした。

てか、東京がますます嫌いになったかも。

実家にあがりこむのらぬこ

f:id:clover-leaf:20090511015257p:image

  • 2009/05/5
  • 0
misc

しばらくオフライン生活

しばらく実家のネットなしエココ生活です。

テレビもなんか潰れてる感じでかなり素敵ゾーン。

まぁ、3G入るからiPhoneでうろうろはできるんだけどな。

今回も京都をうろうろして全然実家がある大阪に居ない。

  • 2009/05/3
  • 0
music

まく音

隙間の時間でなんとなく池澤春菜の天声姫語PODCASTを聴いている。

あの方、mac好きっ娘だったのな。

月一回しか更新しないっぽいのにかなりグダグダなのがいい。

終わり方もプツッって感じで突然終わる感じ。

しかも10分もない。

最近のPODCASTは長過ぎて全部聴く気にならない。

100時間のRPGやる気しないのと同じデスよ。

ラジオは1ヶ月10分まで!

  • 2009/05/3
  • 0
engineer

Simplify Media 2.0が素晴しい

Simplify Mediaは、Mac, Linux, Windowsの音楽ライブラリをインターネットを通じて共有できるサービスです。
この間2.0がリリースされたわけですが、これが以前バージョンの不満のほとんどを解決してくれていて素晴しい。
一番不満だったシークができない、という仕様が解決。
Podcastを聴くときが多いので家で途中まで聴いたやつを続き移動中にiPhoneで、とかいうときすごい不便だった。
カバーアートも歌詞も1.0時代から対応していたので、へたなメディアプレーヤ以上の充実っぷり。
素晴しい。
あと不満といえば、レジュームがきかないことぐらいか。
あと、なんか今回のバージョンアップでインデックスキャッシュを止めたのか、リストが表示されるまでの時間が長い。
1.0のときいったんキャッシュされたらサクサク表示されていたと思うんだけど。
でも、よくできてるわー。

音楽ないと死ぬ方面の人なのでiPodは160Gのclassicでたくさん持ち歩いているのですが、さすがにPodcastも入れるときりないのでSimplify Media経由で家のライブラリに接続して聴いてます。
Podcastなら音質とかもともとたいしたことないので丁度いいし。
これでもっといい音質で流せるぐらい線が太くなったらiPodも持ち歩かなくなってしまうと思う。
いい世の中だ。
  • 2009/05/2
  • 0
engineer

Adobe Illustrator 1.0

  • Meet Adobe Illustrator (1987)

D

20年前のAdobe Illustrator 1.0のセールスビデオ。

Adobeのすごいところは、ほとんどの製品でそのコアとなる部分がファーストバージョンで完成していて、現在の最新バージョンでも変わっていないところなんだよね。

パレットとかドローツールの操作とか今と変わらない。

20年変えないということは変えるよりずっと難しい。

貧弱なヴィジョンしか持たない企業にはできないことだ。

  • 2009/05/1
  • 0
misc

大型連休

去年後半全然休めてなかったし、やらないかんこともたくさんあるので来週は全部お休みにした。
真ん中あたりは関西に戻ったりもする予定。
東京のひとごみじゃ、パンドセル レベル5が怖いしね。(うそ

最近は、ちょっとFlashも久々にいじくってます。
Adobeがテレビ向けのFlashに相当本気みたいなので、つないどけばいいことありそうだし。
これまでも少しずつ勉強していた物理系と基本的な3Dを勉強しなおしてます。
すごい楽しい。
なんか仕事にもとりこめないかな。
最近仕事はもうまったくダメ(おもしろくできない)ので、チームメンバも増えたしガツガツいくのはみなさんにお願いしてもうちょっとおもしろくするための努力をボクはしようかと。
ボクより上の人間は、もう酷い状況でモチベーションが0で正直死んでる。
無理もないんだけどね。
でも、腐らない。
そういうことは最初の3年でいやというほど味わったからね。

なんかX3のサンプルとか見てたらすごく欲しくなってきた。
カードゲームとカメラは底無しに金を消費するのでやらないと決めてたんだけど。
むぅ。

なんとなくmiodesignworks.netとかドメインいくつかとったり。
なんかね、始めたいかな、ってことでいつもどおり形から。

あー、関西の実家ネットないの困るな。
  • 2009/05/1
  • 0
misc

HTMLメールってもっと使っていいんじゃないか

ひと昔前はHTMLメールなんて送るのももらうのもとんでもない、って感じでしたが、最近は抵抗感がなくなった。

最近じゃメジャーなメーラは対応しているし、国際化もきちんと対応されているので問題になることはほとんどない。

むしろもっと使うべきじゃないかな、と思っている。

なぜこんなことを考えるようになったかというと、

メールって非同期ノーティフィケーションとしては今のところ最も利便性が高いシステムなわけですよね。

よって仕事とかもメールでやってくることが多いわけですが、メールにツールが埋めこまれていたらすごい効率いいと感じてます。

よく、「資料できたらここにあげといて。」とかあるけど、そんなのもうアップロード画面をHTMLで埋めこんどくの。

ちょっとした情報収集の依頼なんかもメールにフォームとか埋めこんでくれれば、入力も楽だし集計側も楽になるでしょ。

そうすると今のWebアプリはメーラ上で使うことになっていくのかも。

メールって登場初期から使い方がまったく進化していないのはおかしいよねぇ。

  • 2009/04/2
  • 0
misc

ダメ社員、正社員と派遣社員、そして就職氷河期

ようやく仕事がひと段落しそうなので復活。

去年は、いろいろな仕事をやりすぎて何をやっていたのかよくわからんかった。

しかも、結構身にならない仕事もしてしまったので後悔している。

そうこうしている間に大恐慌だし。

タイミングいろいろ悪すぎ。

派遣切りが横行していて、正社員は守るのに派遣は切るのか! みたいに言われてますが、正社員が幸せなわけじゃない。

事実、今までお願いしていた仕事を全部自分でしなくてはならず、しかもいろいろな制約も付いてくる。

正直すごいプレッシャ、ストレスです。

代償としては大きすぎる。

うちなんかもの作りなんで、管理ばっかやってて作れなくなってしまった人達なんか悲惨な感じ。

どうすんだろ。

うちらに回ってくるんだろうか。

やだな。

派遣で切られた人は気の毒に思うけど、うちらだって犠牲者だ。

今の状況は、全員負け、ということなんだと思う。

つらい時代だ。

んで、また採用がね。

もう、酷すぎる。

不謹慎だけど、もう大きいところは無視して、中小、ベンチャーで頑張って採用かけてるところに行った方がいい。

で、2年、3年後に会社ごとでかくなって見かえしてほしい。

できると思う。

いろいろ報道されてるようにでかいところはもう人間保守。

使い古された人間を安価に保守して、だましだまし動いてる状態。

そんなのいつか破綻する。

そういう意味で、この大恐慌は、力関係がひっくりかえる時なわけで。

2年、3年は我慢しないといけないでしょうけど、その後きっとでかいパラダイムシフトが起きる。

今の学生は、そこ目指していきなりだけど長期視点で道を選んでほしい。

ていうか自分自身も2、3年先を睨んでもう動いてる。

保守なんかで錆びたくないんでね。

ということで、気持ち切り変えるため、来週からメガネ変えようと思う。(ェー

  • 2009/03/7
  • 0
apple, mac

AppleCare Protection Plan for iPod は入っておいて損はない

Apple製品には、長期保証プランとしてAppleCare Protection Planというのがある。
2、3割ぐらいプラスされるので少し高いんだが、iPodに関しては入っておいて損はない。
なぜかというと、期間内に故障した場合、ほぼ無条件に交換で新品にしてくれるから。
保証期間は2年なので、だいたいバッテリーがへたり始めるところで、新品に交換されるわけでなかなかおいしい。
一応、バッテリー性能が50%以下など規定があるのだが、特に検証もなく交換してくれる。
今日、iPod classic 160Gを交換してきたんだが、やはり特に検証もなく新品になった。
多分、50%以下ということはなかったと思うが。
Apple Storeに持っていけば取り寄せとかいうこともなく、すぐに商品をもらえる。

iPod classicとかtouchとか3万越えクラスのiPodなら長く使いたいと思うので、購入時は割り高でも結果的に安く収まるはず。
Appleにしては良心的なサービスなのでぜひ利用をオススメします。