<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>KYUCON*BLOG</title>
      <link>http://www.kyucon.com/blog/</link>
      <description>FlashとShockwaveの実験や、日常について、メモ代わりに載せていきます｡</description>
      <language>ja</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Mon, 24 Aug 2009 23:48:09 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2-ja-2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>[Q-BLOCK] impressive works</title>
         <description><![CDATA[現時点で3000件以上投稿されています。
いろんな作品があって楽しいです。
特に上手な作品をピックアップしてみました。

作者別：
<a href="http://kyucon.com/qblock/?author=POKEMON" target="qblock">POKEMONさん
<img src="http://m-aqua.com/qblock/img/2956.png"><img src="http://m-aqua.com/qblock/img/2954.png"><img src="http://m-aqua.com/qblock/img/2952.png"></a>

<a href="http://kyucon.com/qblock/?author=NAOSUKE" target="qblock">NAOSUKEさん
<img src="http://m-aqua.com/qblock/img/824.png"><img src="http://m-aqua.com/qblock/img/658.png"><img src="http://m-aqua.com/qblock/img/406.png"></a>

<a href="http://kyucon.com/qblock/?author=HEE" target="qblock">HEEさん
<img src="http://m-aqua.com/qblock/img/915.png"><img src="http://m-aqua.com/qblock/img/261.png"><img src="http://m-aqua.com/qblock/img/183.png"></a>

<a href="http://kyucon.com/qblock/?author=WEEPYMOON" target="qblock">WEEPYMOONさん
<img src="http://m-aqua.com/qblock/img/2970.png"><img src="http://m-aqua.com/qblock/img/2737.png"><img src="http://m-aqua.com/qblock/img/2691.png"></a>

<a href="http://kyucon.com/qblock/?author=TOAD" target="qblock">TOADさん
<img src="http://m-aqua.com/qblock/img/2981.png"><img src="http://m-aqua.com/qblock/img/2955.png"><img src="http://m-aqua.com/qblock/img/2211.png"></a>

景色、建物：
<a href="http://kyucon.com/qblock/?2118" target="qblock"><img src="http://m-aqua.com/qblock/img/2118.png"></a><a href="http://kyucon.com/qblock/?2315" target="qblock"><img src="http://m-aqua.com/qblock/img/2315.png"></a><a href="http://kyucon.com/qblock/?1426" target="qblock"><img src="http://m-aqua.com/qblock/img/1426.png"></a><a href="http://kyucon.com/qblock/?863" target="qblock"><img src="http://m-aqua.com/qblock/img/863.png"></a><a href="http://kyucon.com/qblock/?860" target="qblock"><img src="http://m-aqua.com/qblock/img/860.png"></a><a href="http://kyucon.com/qblock/?743" target="qblock"><img src="http://m-aqua.com/qblock/img/743.png"></a>

キャラクター：
<a href="http://kyucon.com/qblock/?1322" target="qblock"><img src="http://m-aqua.com/qblock/img/1322.png"></a><a href="http://kyucon.com/qblock/?538" target="qblock"><img src="http://m-aqua.com/qblock/img/538.png"></a><a href="http://kyucon.com/qblock/?1854" target="qblock"><img src="http://m-aqua.com/qblock/img/1854.png"></a><a href="http://kyucon.com/qblock/?659" target="qblock"><img src="http://m-aqua.com/qblock/img/659.png"></a><a href="http://kyucon.com/qblock/?1294" target="qblock"><img src="http://m-aqua.com/qblock/img/1294.png"></a><a href="http://kyucon.com/qblock/?992" target="qblock"><img src="http://m-aqua.com/qblock/img/992.png"></a><a href="http://kyucon.com/qblock/?1142" target="qblock"><img src="http://m-aqua.com/qblock/img/1142.png"></a><a href="http://kyucon.com/qblock/?1586" target="qblock"><img src="http://m-aqua.com/qblock/img/1586.png"></a><a href="http://kyucon.com/qblock/?1055" target="qblock"><img src="http://m-aqua.com/qblock/img/1055.png"></a><a href="http://kyucon.com/qblock/?1064" target="qblock"><img src="http://m-aqua.com/qblock/img/1064.png"></a>

ゲーム機、コンピュータ：
<a href="http://kyucon.com/qblock/?838" target="qblock"><img src="http://m-aqua.com/qblock/img/838.png"></a><a href="http://kyucon.com/qblock/?1447" target="qblock"><img src="http://m-aqua.com/qblock/img/1447.png"></a><a href="http://kyucon.com/qblock/?1483" target="qblock"><img src="http://m-aqua.com/qblock/img/1483.png"></a><a href="http://kyucon.com/qblock/?739" target="qblock"><img src="http://m-aqua.com/qblock/img/739.png"></a><a href="http://kyucon.com/qblock/?221" target="qblock"><img src="http://m-aqua.com/qblock/img/221.png"></a><a href="http://kyucon.com/qblock/?224" target="qblock"><img src="http://m-aqua.com/qblock/img/224.png"></a>

乗り物：
<a href="http://kyucon.com/qblock/?375" target="qblock"><img src="http://m-aqua.com/qblock/img/375.png"></a><a href="http://kyucon.com/qblock/?442" target="qblock"><img src="http://m-aqua.com/qblock/img/442.png"></a><a href="http://kyucon.com/qblock/?2274" target="qblock"><img src="http://m-aqua.com/qblock/img/2274.png"></a><a href="http://kyucon.com/qblock/?1270" target="qblock"><img src="http://m-aqua.com/qblock/img/1270.png"></a><a href="http://kyucon.com/qblock/?403" target="qblock"><img src="http://m-aqua.com/qblock/img/403.png"></a><a href="http://kyucon.com/qblock/?1313" target="qblock"><img src="http://m-aqua.com/qblock/img/1313.png"></a>

その他：
<a href="http://kyucon.com/qblock/?2051" target="qblock"><img src="http://m-aqua.com/qblock/img/2051.png"></a><a href="http://kyucon.com/qblock/?1414" target="qblock"><img src="http://m-aqua.com/qblock/img/1414.png"></a><a href="http://kyucon.com/qblock/?1497" target="qblock"><img src="http://m-aqua.com/qblock/img/1497.png"></a><a href="http://kyucon.com/qblock/?991" target="qblock"><img src="http://m-aqua.com/qblock/img/991.png"></a><a href="http://kyucon.com/qblock/?467" target="qblock"><img src="http://m-aqua.com/qblock/img/467.png"></a><a href="http://kyucon.com/qblock/?1998" target="qblock"><img src="http://m-aqua.com/qblock/img/1998.png"></a><a href="http://kyucon.com/qblock/?2522" target="qblock"><img src="http://m-aqua.com/qblock/img/2522.png"></a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000458.html</link>
         <guid>http://www.kyucon.com/blog/archives/000458.html</guid>
         <category>Flash3D</category>

         <pubDate>Mon, 24 Aug 2009 23:48:09 +0900</pubDate>
      </item>
            <item>
         <title>3Dドット絵ツール</title>
         <description><![CDATA[立体ブロックを使ってお絵描きできるサイト「<a href="http://kyucon.com/qblock/" target="_blank">Q-BLOCK</a>」を公開しました。
ぜひ遊んでください。
<a href="http://kyucon.com/qblock/" target="_blank" style="margin:0"><img src="http://kyucon.com/blog/archives/qblock.jpg" width="560" height="362"></a>

メモリを大量に消費しちゃいます。動かない人は新しいＰＣ買うと良いよ。
短期間でサクッと作れたので割と満足してます。
Papervisionのおかげ。]]></description>
         <link>http://www.kyucon.com/blog/archives/000457.html</link>
         <guid>http://www.kyucon.com/blog/archives/000457.html</guid>
         <category>Flash3D</category>

         <pubDate>Fri, 14 Aug 2009 02:06:40 +0900</pubDate>
      </item>
            <item>
         <title>[AS3.0] 画面外をクリックしたらポーズ(一時停止)する方法</title>
         <description><![CDATA[SWF以外の部分をクリックしたらポーズさせるための小技をご紹介します。
デスクトップなどブラウザウィンドウ外をクリックした場合も含みます。
下記のようにTextFieldのFocusEventを使うところがポイントです。

<pre class="brush:as3;gutter:false;auto-links:false;">
package {
	import flash.display.Sprite;
	import flash.events.FocusEvent;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	public class DocumentClass extends Sprite {
		private var debugTF:TextField ;
		public function DocumentClass() {
			//デバッグ用のテキスト
			debugTF = createTextField(600, 20, 0, 0, "はじめにここをクリックしてSWFにフォーカスを移してください。");
			addChild(debugTF);
			//フォーカス検知用テキストフィールド
			var focusTF:TextField = new TextField();
			//ステージ全体を覆うサイズにする
			focusTF.width = stage.stageWidth;
			focusTF.height = stage.stageHeight;
			focusTF.selectable = false;
			focusTF.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
			focusTF.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
			//必ず最上位レイヤーに配置
			addChildAt(focusTF, this.numChildren);
		}
		//ポーズ処理
		private function onFocusOut(e:FocusEvent):void {
			debugTF.text = "SWFからフォーカスが外れたのでポーズ中。灰色のエリアをクリックすると再開します。";
		}
		//再開処理
		private function onFocusIn(e:FocusEvent):void {
			debugTF.text = "SWFにフォーカス中。画面外をクリックするとポーズ状態になります。";
		}
		private function createTextField(w, h, x, y, str):TextField {
			var tf:TextField = new TextField;
			tf.width = w;
			tf.height = h;
			tf.x = x;
			tf.y = y;
			tf.text = str;
			tf.selectable = false;
			return tf;
		}
	}
}
</pre>

<a href="http://kyucon.com/blog/archives/pause.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/pause.zip" target="_blank">・ソースファイル</a>


]]></description>
         <link>http://www.kyucon.com/blog/archives/000456.html</link>
         <guid>http://www.kyucon.com/blog/archives/000456.html</guid>
         <category>Flash</category>

         <pubDate>Mon, 15 Jun 2009 02:57:46 +0900</pubDate>
      </item>
            <item>
         <title>[AS3.0] RSA暗号化して通信経路途中での改ざんを防止</title>
         <description><![CDATA[例えば、ゲームのセーブデータをサーバで保存していて
「アイテム1個持ってます」という情報をSWFで受け取る場合、
SWFに届く前に「アイテム100個持ってます」に改竄されるとまずいということで暗号化することにしました。

<a href="http://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7" target="_blank">RSA暗号</a>は「暗号」と「署名」の2つの使い方ができます。
▼暗号
公開鍵を使って誰でも暗号化できるが、復号できるのは秘密鍵を持っている人だけ。
SWFからサーバに送るデータを途中で読み取られないようにする場合などに使うと思います。
SWFに埋め込んだ公開鍵で暗号化して送り、サーバ側にある秘密鍵で解読というような使い方。
こちらが参考になります：<a title="suz-lab - blog: AS3で暗号/復号化(RSA版)" href="http://blog.suz-lab.com/2009/01/as3rsa.html" target="_blank">suz-lab - blog: AS3で暗号/復号化(RSA版)</a>
▼署名
秘密鍵を使って暗号化したデータを、公開鍵で復号する。
暗号文を復号した結果が平文と同じなら、正しい送り主からのデータであり改竄されていないということになる。
今回はこちらを使います。
サーバ側で秘密鍵を使って暗号化し、SWF側で公開鍵を使って復号するという流れ。

暗号化ライブラリは<a href="http://code.google.com/p/as3crypto/" target="_blank">as3crypto</a>を使います。
下記がサンプルソースですが、
実際には【2】の処理はサーバ側で行い、SWF側では【1】と【3】を実装することになります。

<pre class="brush:as3;gutter:false;auto-links:false;">
import flash.utils.ByteArray;
import com.hurlant.crypto.rsa.RSAKey;
import com.hurlant.util.Base64;
import com.hurlant.util.Hex;
public function CryptTest() {
	// 暗号化の対象となる文字列
	var original_str:String = "アイテム1個持ってます"; 
	//------------------------
	//【1】復号用の公開鍵
	var public_modulus:String= 
"f0bc13f68e0c02397af4aeaf2edc94f92e94945eea1f745235ff05ff16e9b6490267b9"
+"82b22c6aff4b6887fc89e7d92d8a2254c7f4c2fb7a116478f875dc8da5";
	var public_exponent:String = "10001";
	//------------------------
	//【2】↓ここからは、サーバ側でやる処理ですがサンプルということで載せてます。
	//暗号化用の秘密鍵
	var private_exponent:String= 
"de6f3a16e7bb4ad6e7b86c2bec25def4bb48882b8732971d5b4d0fb25aee8a00f2fd"
+"6987d1ca990846b50e70be386867be09b64840157c0d7d451d91ccc92e21";
	var rsa_sign:RSAKey = RSAKey.parsePrivateKey(public_modulus, public_exponent, private_exponent);
	//ByteArrayに
	var srcEncryptBA:ByteArray = Base64.decodeToByteArray(Base64.encode(original_str)); 
	//暗号化したデータを格納するためのByteArray
	var dstEncryptBA:ByteArray = new ByteArray();
	//暗号化実行
	rsa_sign.sign(srcEncryptBA, dstEncryptBA, srcEncryptBA.length);
	//暗号化されたデータをBase64エンコード
	var encrypted_str:String = Base64.encodeByteArray(dstEncryptBA);
	trace("暗号化済み文字列。これをSWFに返す。" + encrypted_str);
	//↑ここまで、サーバ側でやる処理
	//------------------------
	//【3】復号
	var rsa_verify : RSAKey= RSAKey.parsePublicKey(public_modulus, public_exponent);
	var srcDecryptBA:ByteArray = Base64.decodeToByteArray(encrypted_str);
	//復号したデータを格納するためのByteArray
	var dstDecryptBA:ByteArray = new ByteArray();
	//復号実行
	try{
		rsa_verify.verify(srcDecryptBA, dstDecryptBA, srcDecryptBA.length);
		trace("復号した文字列：" + dstDecryptBA.toString());
		if(dstDecryptBA.toString()==original_str){
			trace("改竄なし");
		}else{
			trace("改竄あり");
		}
	}catch (e) {
		trace("verify失敗。不正なデータ。");
	}
	rsa_verify.dispose();
}
</pre>

鍵の生成は<a title="" href="http://crypto.hurlant.com/demo/"  target="_blank">AS3 Crypto Demo page</a>でやると簡単。

余談：「暗号化」の対義語は「復号化」ではなく「復号」なんだって。

追記：(09/06/15 02:50)
もっと厳しくやるには、タイムスタンプを含めておいてサーバ時間と比較しないといけないかも。
「アイテム1個持ってます」というサーバレスポンスを解析保存され
アイテム0個の時にそのデータを送り込まれる、ということを防ぐために。
素直にSSL使えば何も考えなくていいのかな。
]]></description>
         <link>http://www.kyucon.com/blog/archives/000455.html</link>
         <guid>http://www.kyucon.com/blog/archives/000455.html</guid>
         <category>Flash</category>

         <pubDate>Sun, 14 Jun 2009 21:52:50 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 FLV動画再生</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample14.jpg" width=400 height=200 />
FLV動画をマテリアルにする場合は、VideoStreamMaterial()を使います。

<pre class="brush:as3;gutter:false;auto-links:false;">
//FLV読み込み
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns: NetStream = new NetStream(nc);
var video:Video = new Video();
video.attachNetStream(ns);
ns.client = {};
ns.play("http://kyucon.com/nekotv/012.flv");
//マテリアル生成
var material:VideoStreamMaterial = new VideoStreamMaterial(video,ns);
//平面にマテリアルを適用
plane = new Plane( material, 320, 240);
scene.addChild(plane);
</pre>

<a href="http://kyucon.com/blog/archives/sample14.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample14.zip" target="_blank">・ソースファイル</a>
]]></description>
         <link>http://www.kyucon.com/blog/archives/000454.html</link>
         <guid>http://www.kyucon.com/blog/archives/000454.html</guid>
         <category>Flash3D</category>

         <pubDate>Thu, 11 Jun 2009 01:13:20 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 接触判定</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample13.jpg" width=400 height=200 />
オブジェクト同士の接触判定はhitTestObject()で可能です。

<pre class="brush:as3;gutter:false;">if(objA.hitTestObject(objB)){
	//接触している
}</pre>

ただしバウンディングボックス同士での判定なので、
形状によっては本当は当たってないのにtrueになったりします。
回転やスケールを変えてもバウンディングボックスは変化しないようです。
正確に判定したい場合は自前で実装するしかないですね。
<a href="http://kyucon.com/blog/archives/sample13.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample13.zip" target="_blank">・ソースファイル</a>

関連する情報として下記があります。
DisplayObject3D.geometry.boundingSphere　バウンディングスフィア情報
DisplayObject3D.geometry.aabb　ローカル座標軸に沿ったバウンディングボックス情報
Vertices3D.boundingBox()　ローカル座標でのバウンディングボックス情報
Vertices3D.worldBoundingBox()　グローバル座標でのバウンディングボックス情報
]]></description>
         <link>http://www.kyucon.com/blog/archives/000453.html</link>
         <guid>http://www.kyucon.com/blog/archives/000453.html</guid>
         <category>Flash3D</category>

         <pubDate>Thu, 11 Jun 2009 00:45:46 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 被写界深度</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample12.jpg" width=400 height=200 />
被写界深度のぼかし表現をシンプルに再現してみます。
ポイントは下記です。
・ぼかしをかける対象となるVieportLayerをviewport.getChildLayer()を使って作成。
・カメラからオブジェクトまでの距離はcamera.distanceTo()を使って求める。
・距離に応じてVieportLayerにBlurFilterをかける。

<pre class="brush:as3;gutter:false;">//ぼかし対象となるビューポートレイヤーを格納する配列
private var layers:Array = [];
//カメラから注視点までの距離（この距離にある物が一番はっきり見える）
private var offset:Number = 1000;
//レンダリングのたびに更新
override protected function onRenderTick(event:Event):void {
 for (var i:uint = 0; i < layers.length; i++) {
  //注視点からオブジェクトまでの距離
  var distance:Number=Math.abs(camera.distanceTo(layers[i].displayObject3D)-offset);
  //距離に応じてぼかし量を調節
  var v:uint = Math.min(30, distance* 0.02);
  //ViewportLayerにフィルターを掛ける
  layers[i].filters = [new BlurFilter(v,v,2)];
 }
}</pre>
<a href="http://kyucon.com/blog/archives/sample12.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample12.zip" target="_blank">・ソースファイル</a>
]]></description>
         <link>http://www.kyucon.com/blog/archives/000452.html</link>
         <guid>http://www.kyucon.com/blog/archives/000452.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 16:45:48 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 ポリゴンメッシュ作成</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample11.jpg" width=400 height=200 />
頂点を指定してポリゴンを作成するには下記のようにします。

<pre class="brush:as3;gutter:false;">//メッシュのマテリアル
var material:ColorMaterial = new ColorMaterial(0x00AA00);
//メッシュを作成
mesh = new TriangleMesh3D(material, [], []);
scene.addChild( mesh );
//頂点作成
var v0:Vertex3D = new Vertex3D(-25, 0, 0 ) ;
var v1:Vertex3D = new Vertex3D(25, 0, 0 ) ;
var v2:Vertex3D = new Vertex3D(0, 50, 0 );
//表面からみて反時計周りになるように頂点を選ぶ
var vertices:Array = [v0, v1, v2];
//メッシュに頂点の配列を追加
mesh.geometry.vertices=vertices;
//メッシュに面を追加
mesh.geometry.faces.push( new Triangle3D(mesh, vertices));
//頂点の法線計算実行（やらなくても支障ないかも、シェーディングに使うのかな）
mesh.geometry.ready = true;</pre>
<a href="http://kyucon.com/blog/archives/sample11.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample11.zip" target="_blank">・ソースファイル</a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000451.html</link>
         <guid>http://www.kyucon.com/blog/archives/000451.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 13:32:35 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 BitmapViewportMaterial</title>
         <description><![CDATA[BitmapViewportMaterialを使うとBitmapViewport3Dをテクスチャにすることができます。
別のカメラで映している景色を壁面に投影したい時や、または鏡の表現を行う時などに使います。
<img src="http://kyucon.com/blog/archives/sample10.jpg" width=400 height=200 />

<pre class="brush:as3;gutter:false;">//ビューポート生成
bmpView= new BitmapViewport3D(600, 600, false, false, 0xeeeeee);
//ビューポートをマテリアル化
var material:BitmapViewportMaterial = new BitmapViewportMaterial(bmpView);
//平面のマテリアルとして適用
var plane:Plane= new Plane(material, 200, 200);
//レンダリングのたびに更新
override protected function onRenderTick(event:Event = null):void {
 //cameraで映したsceneをbmpViewにレンダリング
 renderer.renderScene(scene, camera, bmpView);
 super.onRenderTick();
}</pre>
<a href="http://kyucon.com/blog/archives/sample10.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample10.zip" target="_blank">・ソースファイル</a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000450.html</link>
         <guid>http://www.kyucon.com/blog/archives/000450.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 08:07:01 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 ReflectionViewで鏡面反射</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample09.jpg" width=400 height=200 />
ReflectionViewを継承することで、床(XZ平面)の反射表現を行えます。

<pre class="brush:as3;gutter:false;">public class World extends ReflectionView{
 public function World(){
  super(600, 600, false);
  //鏡面のＹ座標を設定
  surfaceHeight = -100;
  //鏡面の色を調整
  setReflectionColor(0.7, 0.7, 0.7);
  //鏡面をぼかしたい場合は下記フィルターを使う
  viewportReflection.filters = [new BlurFilter(10,10,2)]; 
 }
}</pre>
<a href="http://kyucon.com/blog/archives/sample09.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample09.zip" target="_blank">・ソースファイル</a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000449.html</link>
         <guid>http://www.kyucon.com/blog/archives/000449.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 05:15:40 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 残像エフェクト</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample08.jpg" width=400 height=200 />
残像エフェクトをかける場合は、通常のViewport3Dは使わずに
BitmapViewport3Dクラスを使います。このエフェクトは描画負荷がかなり高いです。

<pre class="brush:as3;gutter:false;">//BitmapViewport3Dを生成
viewport = new BitmapViewport3D(600, 600, true, true, 0xcccccc);
addChild(viewport);
//残像効果を描画するためには下記をfalseにする
viewport.fillBeforeRender = false;</pre>
そして、レンダリングのたびに残像をぼかす処理と徐々に消す処理を行う

<pre class="brush:as3;gutter:false;">override protected function onRenderTick(event:Event = null):void {
 var bmd:BitmapData=viewport.bitmapData;
 //残像をぼかす
 bmd.applyFilter(bmd, bmd.rect, point, blur);
 //古い残像が消えていくように
 bmd.colorTransform(bmd.rect, alphaTrans);
 super.onRenderTick();
}
</pre>

<a href="http://kyucon.com/blog/archives/sample08.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample08.zip" target="_blank">・ソースファイル</a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000448.html</link>
         <guid>http://www.kyucon.com/blog/archives/000448.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 02:57:08 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 ベクターテキスト</title>
         <description><![CDATA[<img src="http://kyucon.com/blog/archives/sample07.jpg" width=400 height=200 />
ベクターデータの文字を表示したい時はText3Dクラスを使います。

<pre class="brush:as3;gutter:false;">//マテリアル生成(色とアルファ指定)
var textMaterial:Letter3DMaterial = new Letter3DMaterial(0xFF0000,1);
//フォント生成
var font:HelveticaBold = new HelveticaBold();
//テキスト３Ｄ生成
var text3D:Text3D = new Text3D("Hello World.", font, textMaterial);
scene.addChild(text3D);</pre>

Papervision3Dライブラリに付属しているフォントクラスはHelveticaファミリーだけですが、
他のフォントを使いたい場合は、<s><a href="http://www.libspark.org/wiki/nitoyon/PotrAs" target="_blank">PotrAs</a>などを使ってフォントクラスを作るみたい。
参考：<a href="http://blog.xlune.com/2009/05/papervision3dtext3dwonderflfor.html" target="_blank">Papervision3DのText3Dで日本語使ってみたのをWonderflでforkした</a></s>

<a href="http://kyucon.com/blog/archives/sample07.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample07.zip" target="_blank">・ソースファイル</a>

追記：09/06/16 19:54
フォントクラスの作り方は下記に載っています。FIVe3Dのmake_typographyツールを使います。
<a title="MAD VERTICES: PV3D Text Primitive" href="http://www.madvertices.com/2009/02/pv3d-text-primitive.html" target="_blank">MAD VERTICES: PV3D Text Primitive</a>
※日本語フォントを全文字変換するのは非常に時間がかかるので現実的ではないです。
※全角スペースはエラーが出るので変換対象に含めてはいけないようです。
]]></description>
         <link>http://www.kyucon.com/blog/archives/000447.html</link>
         <guid>http://www.kyucon.com/blog/archives/000447.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 01:42:45 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 環境マッピング(Environment Mapping)</title>
         <description><![CDATA[環境マッピングを使った映り込み表現。
金属っぽい質感を出すときに使いますね。
ライトの位置によって映り込む方向が変わります。
<img src="http://kyucon.com/blog/archives/sample06.jpg" width=400 height=200 />

使い方は、下記のようにEnvMapShaderの引数に
ライトと環境用ビットマップデータを渡してやります。

<pre class="brush:as3;gutter:false;">var shader:EnvMapShader = new EnvMapShader(light, env_bmd, env_bmd);
var shadedMaterial:ShadedMaterial =  new ShadedMaterial(bitmapMaterial, shader);
var sphere:Sphere = new Sphere(shadedMaterial);</pre>
<a href="http://kyucon.com/blog/archives/sample06.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample06.zip" target="_blank">・ソースファイル</a>

]]></description>
         <link>http://www.kyucon.com/blog/archives/000446.html</link>
         <guid>http://www.kyucon.com/blog/archives/000446.html</guid>
         <category>Flash3D</category>

         <pubDate>Wed, 10 Jun 2009 00:34:14 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 スカイボックス</title>
         <description><![CDATA[背景(風景)の作り方。
風景のテクスチャを張った巨大なボックスを置いて
中にカメラを置くだけですね。

ポリゴンの裏表をひっくり返すには下記のようにします。
material.opposite = true;

立方体よりも球体のほうが自然な感じになると思うけど
パフォーマンスとのトレードオフですね。

大気のテクスチャはLightwaveのSkyTracerで作りましたが
一般的にはどうしてるんだろう？

<a href="http://kyucon.com/blog/archives/sample05.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample05.zip" target="_blank">・ソースファイル</a>]]></description>
         <link>http://www.kyucon.com/blog/archives/000445.html</link>
         <guid>http://www.kyucon.com/blog/archives/000445.html</guid>
         <category>Flash3D</category>

         <pubDate>Tue, 09 Jun 2009 23:29:16 +0900</pubDate>
      </item>
            <item>
         <title>Papervision3D 2.0 テクスチャーの歪み補正</title>
         <description><![CDATA[カメラの視野角が広い(パースがきつい)場合に
テクスチャーの歪みが目立つことがあります。
これを補正するのがマテリアルのpreciseプロパティです。
<img src="http://kyucon.com/blog/archives/sample04.gif" width=400 height=200 />

<pre class="brush:as3;gutter:false;">var material1:BitmapMaterial = new BitmapMaterial(bmd);
material1.precise = true;
var material2:MovieMaterial = new MovieMaterial(clip);
material2.precise = true;</pre>

camera.fov=30とか視野角が狭く設定してある場合は
precise=falseのままでも歪みは目立たないです。

<a href="http://kyucon.com/blog/archives/sample04.html" target="_blank">・サンプルSWF</a>
<a href="http://kyucon.com/blog/archives/sample04.zip" target="_blank">・ソースファイル</a>

追記：6月10日21:25
未検証ですがprecise=trueはかなり負荷が高いらしいのでむやみに使わないほうが良いかもしれません。]]></description>
         <link>http://www.kyucon.com/blog/archives/000444.html</link>
         <guid>http://www.kyucon.com/blog/archives/000444.html</guid>
         <category>Flash3D</category>

         <pubDate>Tue, 09 Jun 2009 22:20:00 +0900</pubDate>
      </item>
      
   </channel>
</rss>
