飴屋

Flash3D/Papervision3Dの俯瞰

Papervision3Dの構成

さっそくPapervision3Dのおそらく最新版であるバージョン2.1.932をダウンロードして、ファイル構成を覗いてみることにします。
なお、3DオブジェクトのCollada形式ファイルの読み込みに関するモジュール(/org/ascollada)やZIPユーティリティ(nochump)は直接関係なさそうなので詳細を調べることはやめておきます。知りたいことはFlashの座標空間にどのように3D座標を投影しているのかというところなので、そこに重点をおいて調べてみたいのです。

papervision3d/
Papervision3D.as
scenes/
Scene3D.as
core/
geom/
Lines3D.as
Particles.as
Pixels.as
TriangleMesh3D.as
Vertices3D.as
renderables/
AbstractRenderable.as
IRenderable.as
Line3D.as
Particle.as
Pixel3D.as
Triangle3D.as
Triangle3DInstance.as
VectorShapeRenderable.as
Vertex3D.as
Vertex3DInstance.as
dyn/
DynamicTriangles.as
controller/
AnimationController.as
IControllerProvider.as
IObjectController.as
MorphController.as
SkinController.as
culling/
CompositeTriangleCuller.as
DefaultLineCuller.as
DefaultParticleCuller.as
DefaultTriangleCuller.as
FrustumCuller.as
FrustumTestMethod.as
ILineCuller.as
IObjectCuller.as
IParticleCuller.as
ITriangleCuller.as
NullTriangleCuller.as
RectangleLineCuller.as
RectangleParticleCuller.as
RectangleTriangleCuller.as
ViewportObjectFilter.as
ViewportObjectFilterMode.as
view/
IView.as
IViewport3D.as
log/
AbstractPaperLogger.as
IPaperLogger.as
LogLevel.as
PaperLogger.as
PaperLogVO.as
PaperTraceLogger.as
event/
PaperLoggerEvent.as
io/
BasicExporter.as
exporters/
ExportCollada.as
ExportFileFormat.as
render/
AbstractRenderEngine.as
IRenderEngine.as
sort/
BasicRenderSorter.as
IRenderSorter.as
NullSorter.as
draw/
ILineDrawer.as
IParticleDrawer.as
ITriangleDrawer.as
project/
BasicProjectionPipeline.as
ProjectionPipeline.as
basic/
IProjector.as
filter/
AbstractQuadrantFilter.as
BasicRenderFilter.as
FogFilter.as
IRenderFilter.as
QuadrantFilter.as
QuadrantZFilter.as
shader/
IShaderRenderer.as
ShaderObjectData.as
ShaderRenderer.as
data/
QuadTree.as
QuadTreeNode.as
RenderHitData.as
RenderSessionData.as
RenderStatistics.as
material/
IUpdateAfterMaterial.as
IUpdateBeforeMaterial.as
MaterialManager.as
command/
AbstractRenderListItem.as
IRenderListItem.as
RenderableListItem.as
RenderFog.as
RenderLine.as
RenderParticle.as
RenderPixels.as
RenderTriangle.as
RenderVectorShape.as
VectorShapeHitTest.as
animation/
IAnimatable.as
IAnimationProvider.as
curve/
Curve3D.as
clip/
AnimationClip3D.as
enum/
InfinityType.as
InterpolationType.as
channel/
Channel3D.as
controller/
MorphWeightChannel3D.as
transform/
MatrixChannel3D.as
RotationChannel3D.as
ScaleChannel3D.as
TransformChannel3D.as
TransformStackChannel3D.as
TranslationChannel3D.as
geometry/
GeometryChannel3D.as
VertexChannel3D.as
VerticesChannel3D.as
key/
BezierCurveKey3D.as
CurveKey3D.as
LinearCurveKey3D.as
StepCurveKey3D.as
proto/
CameraObject3D.as
DisplayObjectContainer3D.as
GeometryObject3D.as
LightObject3D.as
MaterialObject3D.as
SceneObject3D.as
effects/
AbstractEffect.as
BitmapColorEffect.as
BitmapFireEffect.as
BitmapLayerEffect.as
BitmapMotionEffect.as
BitmapPixelateEffect.as
IEffect.as
objects/
LensFlare.as
view/
ReflectionView.as
utils/
BitmapClearMode.as
BitmapDrawCommand.as
ConvolutionMatrices.as
math/
AxisAlignedBoundingBox.as
BoundingSphere.as
Matrix3D.as
Number2D.as
Number3D.as
NumberUV.as
Plane3D.as
Quaternion.as
Ray3D.as
Sphere3D.as
util/
ClassificationUtil.as
FastRectangleTools.as
GLU.as
InterpolationUtil.as
Intersection.as
TriangleUtil.as
data/
UserData.as
utils/
InteractiveSceneManager.as
InteractiveUtils.as
MeshUtil.as
Mouse3D.as
StopWatch.as
virtualmouse/
IVirtualMouseEvent.as
VirtualMouse.as
VirtualMouseEvent.as
VirtualMouseMouseEvent.as
ns/
pv3dview.as
clipping/
DefaultClipping.as
FrustumClipping.as
draw/
Clipping.as
RectangleClipping.as
material/
AbstractLightShadeMaterial.as
AbstractSmoothShadeMaterial.as
TriangleMaterial.as
utils/
ObjectController.as
typography/
Font3D.as
Letter3D.as
Text3D.as
VectorLetter3D.as
fonts/
HelveticaBold.as
HelveticaLight.as
HelveticaMedium.as
HelveticaRoman.as
use of fonts.txt
cameras/
Camera3D.as
CameraType.as
DebugCamera3D.as
SpringCamera3D.as
materials/
BitmapAssetMaterial.as
BitmapColorMaterial.as
BitmapFileMaterial.as
BitmapMaterial.as
BitmapViewportMaterial.as
BitmapWireframeMaterial.as
ColorMaterial.as
MovieAssetMaterial.as
MovieMaterial.as
VideoStreamMaterial.as
WireframeMaterial.as
special/
BitmapParticleMaterial.as
CompositeMaterial.as
FogMaterial.as
Letter3DMaterial.as
LineMaterial.as
MovieAssetParticleMaterial.as
MovieParticleMaterial.as
ParticleBitmap.as
ParticleMaterial.as
VectorShapeMaterial.as
shaders/
CellShader.as
EnvMapShader.as
FlatShader.as
GouraudShader.as
ILightShader.as
IShader.as
LightShader.as
PhongShader.as
ShadedMaterial.as
Shader.as
ShaderCompositeModes.as
utils/
BitmapMaterialTools.as
BumpmapGenerator.as
LightMaps.as
LightMatrix.as
MaterialsList.as
PrecisionMode.as
RenderRecStorage.as
shadematerials/
CellMaterial.as
EnvMapMaterial.as
FlatShadeMaterial.as
GouraudMaterial.as
PhongMaterial.as
objects/
DisplayObject3D.as
primitives/
Arrow.as
Cone.as
Cube.as
Cylinder.as
PaperPlane.as
Plane.as
Sphere.as
parsers/
Ase.as
Collada.as
DAE.as
KMZ.as
Max3DS.as
MD2.as
Sketchup.as
SketchupCollada.as
special/
Graphics3D.as
ParticleField.as
SimpleLevelOfDetail.as
Skin3D.as
Sound3D.as
UCS.as
VectorShape3D.as
commands/
BeginFill.as
CurveTo.as
EndFill.as
IVectorShape.as
LineStyle.as
LineTo.as
MoveTo.as
view/
AbstractView.as
BasicView.as
BitmapViewport3D.as
Viewport3D.as
layer/
BitmapEffectLayer.as
ViewportBaseLayer.as
ViewportLayer.as
ViewportLayerEvent.as
util/
ViewportLayerSortMode.as
stats/
AbstractStatsView.as
StatsView.as
events/
AnimationEvent.as
FileLoadEvent.as
InteractiveScene3DEvent.as
RendererEvent.as
lights/
PointLight3D.as
render/
BasicRenderEngine.as
LazyRenderEngine.as
QuadrantRenderEngine.as

ざっとファイルを並べてみるとこんな感じです。ここから受ける印象は「org/papervision3d/Papervision3D.as」がメインのファイルで、その他の部品がいくつかのフォルダに分けて記述されているといった印象です。

scenes
3Dオブジェクトが置かれる場を表す?
core
機能の中核にあたる部分っぽいので詳しくみる必要がありそう。
utils
便利な計算ツールがありそう
typography
文字の立体表現?
cameras
視点や視野に関するカメラ情報?
materials
3Dオブジェクトの表面材質?
objects
3Dオブジェクトそのもの?
view
計算された立体表現を投影する2Dのオブジェクト?
events
イベント定義?
lights
3Dオブジェクトを照らす光源となる照明情報?
render
描画に関する機能?

3D表現に必要な機能が見通せました。
おおまかな全体像がつかめたところで次回以降詳細を調べていこうと思います。

Flash3D