AS3.0を勉強しようと思い、CS4の体験版をインストールしました。
Tweenerを試したりAS2.0との違いなど勉強しているところです。

今回困っているのはpapervision3Dでのコンパイルエラーです。
Public Beta 2.0 - Great White というバージョンをダウンロードし、
/ユーザー/classes/org/papervision3d に配置し、クラスパス設定しました。
環境はMac OS X です。

http://www.thinkit.co.jp/images/article/91/3/913 …
上記URLにてpapervision3Dのサンプルをダウンロードし、01Planeフォルダ内plane.flaをダブルクリックで開きムービーの書き出しをしたところ・・・

1137: 引数の数が正しくありません。0 個以下であることが必要です。scene = new Scene3D( container );
1180: 未定義である可能性が高いメソッド OldCube の呼び出しです。cubeObj = new OldCube( material, cubeSize, cubeSize, cubeSize, segment, segment);
1061: 未定義である可能性のあるメソッド renderCamera を、静的型 org.papervision3d.scenes:Scene3D の参照を使用して呼び出しました。scene.renderCamera( camera );
Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。return (displayObjects[do3d] != null);
Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。var bEnd:Boolean = i==(iHorNum-0);

といったエラーがずらずら表示されます。他のサンプルでもpapervision3Dを使用したものでは同じようなエラーがでてしまいます。
何か特別な設定が必要なのか、クラスパスの設定なのか、それとも根本的な問題なのか、検討がつきません。。
お解りになる方、助けてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

おそらく、あなたがダウンロードしたPapervision3Dと


サンプル(http://www.thinkit.co.jp/images/article/91/3/913 …
で使われているPapervision3Dのバージョンが違います。

そのサンプルは古いバージョンのPapervision3Dが使われています。
最新のPapervision3Dとは大幅に変更されています。
最新のPapervision3D(Revision 858)では
Scene3Dは引数なしのコンストラクタしか定義されていません。
OldCubeはなく、Cubeしかありません。

そのサンプルがどういうものか知りませんが、Cubeを表示するだけのものなら、以下のようにすればできます。

package {
import flash.display.*;
import flash.events.*;

//Papervision3Dで使うクラスをインポート
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.render.*;
import org.papervision3d.scenes.*;
import org.papervision3d.view.*;

//メインクラス
public class HelloCube extends Sprite {
private var scene:Scene3D;//シーン(3D空間)
private var camera:Camera3D;//カメラ
private var viewport:Viewport3D;//ビューポート
private var renderer:BasicRenderEngine//描画エンジン
private var cube:Cube//立方体

public function HelloCube() {
//シーン(3D空間)の生成
scene = new Scene3D();

//カメラの生成
camera = new Camera3D();

//カメラの設定
camera.x = camera.y = 0;
camera.z = -1000;
camera.focus = 100;//focus×zoom分、オブジェクトから離れている場合
camera.zoom = 10;//画面に同じ大きさで描画される

//ビューポートの生成
viewport = new Viewport3D(600, 400);

//画面にビューポートを追加
this.addChild(viewport);

//描画エンジンの生成
renderer = new BasicRenderEngine();

//Cube(立方体)の生成
//マテリアルリストの生成
var materialsList:MaterialsList = new MaterialsList();
materialsList.addMaterial(new ColorMaterial(0xFF0000),"front");
materialsList.addMaterial(new ColorMaterial(0x00FF00),"back");
materialsList.addMaterial(new ColorMaterial(0x0000FF),"right");
materialsList.addMaterial(new ColorMaterial(0xFFFF00),"left");
materialsList.addMaterial(new ColorMaterial(0xFF00FF),"top");
materialsList.addMaterial(new ColorMaterial(0x00FFFF),"bottom");

//マテリアルリストを元にCubeを生成
cube = new Cube(materialsList,100,100,100,2,2,2);

//Cubeをsceneに追加
scene.addChild(cube);

//毎フレームの描画処理メソッドを登録
stage.addEventListener(Event.ENTER_FRAME, drawPapervision3d);
}

//毎フレームの描画
private function drawPapervision3d(e:Event):void {
//Cubeを回転
cube.rotationX += 1;
cube.rotationY += 1;
cube.rotationZ += 1;

//cameraから見たsceneをviewportに描画
renderer.renderScene(scene, camera, viewport);
}

}
}
    • good
    • 0
この回答へのお礼

studentE5T様ありがとうございます。
studentE5T様のCube表示スクリプトを試したところエラーは無く、Cubeが表示されました!感動です!

サンプルがコンパイルエラーになるのはバージョンによるものだったんですね。。気づきませんでした。
また、大きく変更されたという事なので、これから勉強していく自分としては
古いバージョンでまず慣れた方がよいのか、新しいバージョンからやっていった方がよいのか判断が難しいですね。
ネットに転がっているサンプルの多くが新しいバージョンで書き出せないのは辛いですね。

お礼日時:2009/01/13 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q(AS3)「var mc:MovieClip = new MC?();」 の?の部分を変数にできないか

タイトルの通りです。
今ライブラリには100個のムービークリップがあって、それぞれMC1~MC100までのリンケージ名(クラス名)でActionScriptに書き出しているものとします。
これらを動的に「var mc:MovieClip = new MC?();」というふうにしたいのですが、うまくいきません。

一応下のように自分なりに考えてみたのですがやっぱりダメでした。
var i:int = 3;
var str:String = "MC"+i;
var mc:MovieClip = new str();
stage.addChild(mc);

Aベストアンサー

import flash.utils.getDefinitionByName;

var i:int = 3;
var str:String = "MC"+i;
var mcClass:Class = getDefinitionByName(str) as Class;
if(mcClass != null){
var mc:MovieClip = new mcClass();
stage.addChild(mc);
}

こんな感じでどうでしょう?

QFlash papervision3D

初めて質問させて頂きます。よろしくお願いします。

このたびFlashProfessional CS5でpapervisionを使用して3Dの勉強を始めました。
そこで、papervisionについての基本事項を学べたり、また、良いサンプルコードが掲載されているサイトなどが御座いましたら教えて頂けないでしょうか?

取り敢えずの目標として、地面と遠景の空、そしてテクスチャ付きのいくつかのオブジェクトをシーンに配置し、その空間を移動する、という感じの所まで作ってみたいと思っています。

また、先日papervision2.1をダウンロードしたのですが、バージョンの異なるサンプルコードはそのままではコンパイルできない、あるいは意図した動作にならない等のバージョン間での互換性に問題はないでしょうか?

どなたかアドバイス頂けましたら幸いです。

Aベストアンサー

papervision3DをFLEX4-SDKで使用していますが特にパージョンを意識したことはありません。

参考のサイトは(私のブックマークに登録されているところです)
PV3D の立体が試せる Primitive Generator
 http://clockmaker.jp/labs/090419_primitive_generator/bin/index.html
 http://troi.kbc-ehime.ac.jp/kj/?p=516
Papervision3Dいろいろ その1
 http://sakef.jp/blog/2010/10/pv3d_samples_01/
Papervision3D で円形とかリングとか表示してみる
 http://www.nilab.info/zurazure2/000678.html
Papervision3DTM 2.1 日本語 リファレンスガイド
 http://papervision3d-jp.googlecode.com/svn/trunk/docs/index.html

あとpapervision3Dだけでないですがここも参考になると思います
 http://wonderfl.net/
  私の作品も入れてあります(http://wonderfl.net/user/hi.kurosawa)

papervision3DをFLEX4-SDKで使用していますが特にパージョンを意識したことはありません。

参考のサイトは(私のブックマークに登録されているところです)
PV3D の立体が試せる Primitive Generator
 http://clockmaker.jp/labs/090419_primitive_generator/bin/index.html
 http://troi.kbc-ehime.ac.jp/kj/?p=516
Papervision3Dいろいろ その1
 http://sakef.jp/blog/2010/10/pv3d_samples_01/
Papervision3D で円形とかリングとか表示してみる
 http://www.nilab.info/zurazure2/000678.html
Papervisio...続きを読む

Qpapervision3dのfocusとzoomについて

papervision3dを勉強中です。
cameraのプロパティの「focus」と「zoom」の違いがよくわかりません。
試しに値を設定して見ましたが、どちらともオブジェクトが拡大するだけに見えます。
何か特徴がそれぞれあって存在しているプロパティだと思うのですが、
皆さんはどのように使い分けていますか?
ご存知の方がいらっしゃいましたらアドバイスをお願いいたします。

Aベストアンサー

amane123さん、
あまり、自信がないのですが、pv3D(Papervision3D 2.0.0)に内蔵されているDocの中には、
・focus:Number (default = 500) This value is a positive number representing the distance of the observer from the front clipping plane, which is the closest any object can be to the camera. Use it in conjunction with zoom.
・zoom:Number (default = 3) This value specifies the scale at which the 3D objects are rendered. Higher values magnify the scene, compressing distance. Use it in conjunction with focus.

と記載されてますが、実際に、6枚のJPGで6面のCubicを作り、このパラメータを弄った結果からの、憶測です。
1.focus:外部JPGのピクセルサイズを変更して、縮拡大を行うように思われます。
2.zoom:元サイズに対しての倍率で、縮拡大を行うように、思われます。
他の方で、正しく、ご理解されてる方が、いらっしゃれば、ご訂正下さい。

amane123さん、
あまり、自信がないのですが、pv3D(Papervision3D 2.0.0)に内蔵されているDocの中には、
・focus:Number (default = 500) This value is a positive number representing the distance of the observer from the front clipping plane, which is the closest any object can be to the camera. Use it in conjunction with zoom.
・zoom:Number (default = 3) This value specifies the scale at which the 3D objects are rendered. Higher values magnify the scene, compressing distance....続きを読む

Q【Papervision3D】円柱にテクスチャを貼りたい

こんにちは。ご質問させて頂きます。
Papervision3Dにて円柱を作成しています。

円柱の上面、表面、底面それぞれに違う画像を貼付けたいと思っていますがどのような方法で行っていいのかわかりません。
箱型のようにMaterialsListクラスを使って試してみたのですがうまくできませんでした。

どなたかご教授のほど宜しくお願い致します。

Aベストアンサー

プリミティブ形状のCilynderは
DisplayObject3Dの基本として
MaterialsListのプロパティが一応ありますが
それが反映されることはありません

また貼付け方も参照の様なカンジなので
一枚の画像に複数の画像を配置して擬似的に
というのも難しそうです


違う画像を貼付けた
二つの円柱を、大きさを少しずらして配置するのが
多分一番簡単な方法かと思います

すこし丁寧にやるなら
円柱を複製してそれぞれgeometry.facesの配列から
筒の部分と蓋の部分を削除してやって
それぞれに違う画像のテクスチャを貼付けてやるかです
(各facesのtriangle3DがそれぞれにUVのデータを持ってるから
削除してやってもテクスチャのズレは起きないはず)

円柱のgeometry.facesの何番目から何番目が
筒の所になるのかとかは調べた事ないのでわからないです

参考URL:http://takibi.ciao.jp/flash/円柱.swf

Qhttp://level0.kayac.com/2009/04/ie.

http://level0.kayac.com/2009/04/ie.php

上記のサイトの説明にあります、

wmode="window"

に、ついて分からないので教えてください。

どこでどう設定するのか、、。

さっぱり分かりません。

どなたか教えてください。

Aベストアンサー

「設定?」 と訊かれましても
何のソフトでの設定かわからないので誰も答えようがありませんが,
wmode="window" は,
基本的には設定とかそういうものではなくて
SWFファイル(Flashの閲覧用ファイル)をHTMLに貼り付けるときのパラメータです。

HTML作成ツールによって「設定?」は変わりますし
場合によっていわゆる「設定」ではできないソフトもありますし,
タグによって,また,JavaScript を使用した場合と使用しない場合など,
様々な場合があります。

何にしても
SWFファイル(Flashの閲覧用ファイル)をHTMLに貼り付けるときのパラメータです。
テキストエディタなど(またはHTMLエディタのソース編集)でその該当部分を追加するとか書き替えれば良いと思います。

Google検索「object embed wmode="window"」
http://www.google.co.jp/search?hl=ja&q=object+embed+wmode%3D%22window%22


人気Q&Aランキング

おすすめ情報