2007年5月アーカイブ

note.xさんや閃光的網站・弛緩複合体 -Review Division-さん(読み方がわからないです…)ところでかなり詳しく解説されているので参考に(というかパクり?)させていただきました。
使いこなせば面白い表現ができそうだし、簡単そうでもあるのでPlaneオブジェクトを試してみましたよ。

source

package
{
import flash.display.*;
import flash.events.*;
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*
import flash.net.URLLoader;
import flash.net.URLRequest;
[SWF(backgroundColor=0x000000)]
public class TestPv3d3 extends Sprite
{
private var loader:URLLoader;
private var externalXML:XML;
private var container:Sprite;
private var scene:MovieScene3D;
private var camera:Camera3D;
private var planeObj:Plane;
private var planeWidth:Number;
private var planeHeight:Number;
private var planeSegment:int;
private var rootNode:DisplayObject3D;
private var material:BitmapFileMaterial;
private var photo:String;
private var valx:Number;
private var valy:Number;
public function TestPv3d3()
{
loadInitXML();
}
private function loadInitXML():void{
loader = new URLLoader;
loader.load(new URLRequest("init.xml"));
loader.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(event:Event):void {
if(loader != null){
externalXML = new XML(loader.data );
init3D();
}
}
private function init3D():void {
stage.align = StageAlign.TOP_LEFT;
stage.quality = StageQuality.MEDIUM;
stage.frameRate = 30;
//container
container = new Sprite;
addChild( container );
container.x = Number(externalXML.container.x);
container.y = Number(externalXML.container.y);
//scene
scene = new MovieScene3D( container );
//camera
camera = new Camera3D;
camera.x = Number(externalXML.camera.x);
camera.y = Number(externalXML.camera.y);
camera.z = Number(externalXML.camera.z);
camera.focus = Number(externalXML.camera.focus);
camera.zoom = Number(externalXML.camera.zoom);
//rootnode
rootNode = new DisplayObject3D("rootNode");
scene.addChild(rootNode);
//material
material = new BitmapFileMaterial(externalXML.material.bitmapFile);
material.doubleSided = true;
//3Dobject
planeWidth = Number(externalXML.obj.width);
planeHeight = Number(externalXML.obj.height);
planeSegment = int(externalXML.obj.segment);
planeObj = new Plane(material,planeWidth,planeHeight,
planeSegment,planeSegment);
planeObj.x = Number(externalXML.obj.x);
planeObj.y = Number(externalXML.obj.y);
rootNode.addChild(planeObj);
this.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(event:Event):void {
valx = this.container.mouseX;
valy = this.container.mouseY;
planeObj.rotationX = valy;
planeObj.rotationY = valx;
this.scene.renderCamera(camera);
}
}
}

あとから調整・試行錯誤したいパラメータは力技でXMLファイルにもたせてます。(きっともっと効率よく書けるのでしょうが)。XMLファイルの中身は↓な感じです。
<?xml version="1.0" encoding="UTF-8" ?>
<data>
<container>
<x>300</x>
<y>200</y>
</container>
<camera>
<x>0</x>
<y>0</y>
<z>-350</z>
<zoom>1</zoom>
<focus>300</focus>
</camera>
<material>
<bitmapFile>green.jpg</bitmapFile>
</material>
<obj>
<x>0</x>
<y>0</y>
<width>320</width>
<height>180</height>
<segment>2</segment>
</obj>
</data>

日本語でしっかり解説されているものを読みながらなので、ここまでの理解は結構早かったです。
上記のようにすばらしい解説されているサイトがあるので、blogに書きたいことがでてきたらまた紹介しようと思います。

(追記)ASのコードの行間がおかしいですね…

寝そべりながらActionscript3.0cookbook読んでて手元で楽に単語調べたいなあなんて思ってたんですよ。

DSで手書き+インクリメンタルサーチできたらなお良いなあなんて妄想のつもりだったんだけど、ちゃんと商品化されてるんですね。凄いなDS。もうちょっと考えてそれでも欲しかったら買うかも。

blog上でたくさんの方が情報公開しているので、かなり今更感がありますが自分なりにまとめてみたかったのでエントリーしてみました。

Papervision3DはSubverion(以下SVN)のリポジトリが用意されているので、SVNクライアントを準備します。TortoiseSVNを利用している例をみかけましたが、私はSubclipseというEclipsePluginを利用しました。(特に意味はないです)

FlexBuilderのメニュー[ヘルプ]-[ソフトウェア更新]-[検索とインストール]を開きます
新規リモートサイトで名前 Subclipse URL http://subclipse.tigris.org/update/を設定します

[ウィンドウ]-[パースペクティブ]-[その他]でSVNリポジトリー・エクスプローラーを開きます
新規リポジトリの追加でPapervision3Dのリポジトリ(http://svn1.cvsdude.com/osflash/papervision3d)を追加します

pv3d.jpeg

as3>trunk>srcをプロジェクトとしてチェックアウトします
as3の下にralphとtrunkそれぞれにsrcがありますが、trunkのほうを選べばよさそうです(twitter@flaで教えていただきました)

新規プロジェクト作成時にソースパスにチェックアウトした場所を追加すれば利用可能になります

自己流なのでこのやり方で正しいかはわかりませんが ;

アカウント作って放置してたtwitterをいじりはじめました。
http://twitter.com/kimucha/
friendとか勝手に登録しちゃっていいもんなんですか?どうなんですか?

CentOS用メモ

yumの設定
/etc/yum.conf
proxy=http:// [servername or server IP] :[port number]/

wgetの設定
/etc/wgetrc
http_proxy=http://[servername or server IP] :[port number]/

bashの設定
~/.bash_profile
http_proxy="http://[servername or server IP] :[port number]/"
export http_proxy

rpmでリモートファイルを指定するとうまくいかなす…

iddy

 

広告

Powered by Movable Type 4.21-ja