PV3d GreatWhite Text3D


カワボンです。

今日は撮影があって、お外でかけたから結構眠たい。が、三日坊主にならんよう、今日もエントリー。PV3dでベクターテキストを扱えるらしいことは知っていたけど、つっこんでなかったので調べてみた。

よくよく調べてみると、現段階ではHelveticaのみか?。他のフォントで使えるようにするにはどしたらええんだ?ってのはしばらく忘れておこう。

[SWF]http://knap.jp/blog/swf/papervision_test2.swf, 425, 500[/SWF]

ソースは以下。

import org.papervision3d.core.proto.*;
import org.papervision3d.scenes.*;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.view.*;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.materials.special.Letter3DMaterial;
import org.papervision3d.typography.Text3D;
import org.papervision3d.typography.fonts.HelveticaBold;

var viewport:Viewport3D;
var container:Sprite;
var scene:Scene3D;
var camera:Camera3D;
var rootNode:DisplayObject3D;
var renderer:BasicRenderEngine;
var letterformat:Letter3DMaterial;
var textdata:Text3D;
var textdata2:Text3D;
var letterMaterial:Letter3DMaterial;

init();
function init():void
{
//ステージ
stage.quality = “HEGHT”;
stage.scaleMode = “noScale”;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.ENTER_FRAME, roll);

renderer = new BasicRenderEngine();

viewport = new Viewport3D(0,0,true,true);
viewport.opaqueBackground = 0xffffff;
//viewport.viewportHeight = 2200;
viewport.autoClipping = false;
viewport.autoCulling = false;
addChild(viewport);

//コンテナ生成
container = new Sprite();
container.x = this.stage.stageWidth/2;
container.y = this.stage.stageHeight/2;
addChild(container);

//シーン生成
scene = new Scene3D();
rootNode = new DisplayObject3D(“rootNode”);
scene.addChild(rootNode);

letterMaterial = new Letter3DMaterial(0x999999 , 1);
letterMaterial.doubleSided = true;
textdata = new Text3D(“KNAP” , new HelveticaBold() , letterMaterial);
textdata2 = new Text3D(“Design” , new HelveticaBold() , letterMaterial);
textdata.y = 50;
textdata2.y = -50;
rootNode.addChild(textdata);
rootNode.addChild(textdata2);

//camera設定
camera = new Camera3D();
camera.z = -180;
camera.focus = 50;
camera.zoom = 1;
}

function roll(e:Event):void
{
// 回転
rootNode.rotationX -= container.mouseY / 50;
rootNode.rotationY -= container.mouseX / 50;

//再レンダリング
renderer.renderScene(scene,camera,viewport);
}

Scroll to top