2013-02-10 88 views
0

我写基于这个职位上的3D模型再现一小块代码:http://active.tutsplus.com/tutorials/3d/quick-tip-displaying-a-3d-model-with-papervision3d/非常小的3D渲染

我下载了一个免费的DAE文件(car_shell_001.dae)和纹理(vehicle_texture.jpg)。

我刚刚从示例中复制了代码,将文件指针更改为我的文件。这里的代码:

public class Tarini extends BasicView 
    { 
     [Embed(source="Assets/car_shell_001.dae", mimeType="application/octet-stream")] 
     private var bikeModelClass:Class; 

     [Embed(source="./Assets/vehicle_texture.jpg")] 
     private var bikeTextureClass:Class; 

     private var bikeModelDAE:DAE; 

     public function Tarini() 
     { 
      this.loaderInfo.addEventListener (Event.COMPLETE, onFullyLoaded) ; 
     } 

     private function onFullyLoaded(e:Event):void 
     { 
       var bitmap:Bitmap = new bikeTextureClass () ; 

       var bitmapMaterial:BitmapMaterial = new BitmapMaterial (bitmap.bitmapData) ; 

       var materialsList:MaterialsList = new MaterialsList () ; 
       materialsList.addMaterial (bitmapMaterial, "all") ; 

       var byteArray:ByteArray = new bikeModelClass () ; 

       bikeModelDAE = new DAE () ; 
       bikeModelDAE.load (byteArray, materialsList) ; 

       this.scene.addChild (bikeModelDAE) ; 

       this.camera.z = 500; 

       this.startRendering () ; 
     } 

    } 

这是如此简单,我喜欢它。我使用mxmlc进行编译,但没有编译错误。 当我打开生成的swf时,我在浏览器的中心获得了一个小的再现。

有什么问题?我需要以某种方式强制维度? 如果您认为dae和jpg文件会有帮助,请告诉我:

+0

我用_camera对象设置缩放属性,它的工作原理。这是正确的解决方案吗? – tarini 2013-02-10 10:08:59

+0

在发布的代码中,相机的z位置是500,并且(可能)您的3D对象位于z位置0 - 因为其较远而很小? – 2013-02-10 16:41:19

回答

0

在3D引擎和3D编辑器之间测量单位不同是很常见的(实际上只是在编辑器之间可以观察到:简单从搅拌机出口立方体例如,并检查它在SketchUp/3DSMAX /等​​)

你可以做

最简单的事情是缩放模型了初始化之后:

bikeModelDAE.scale = 10;//or any other value that works best for you 

另一个有效的方法是一起玩相机变焦/对焦选项。 如果您只有一个模型可以显示,您可以使用任何一种方法(对象比例,相机属性),但是如果您有多个模型,最好确保在模型之间使用相似的比例尺。

有点偏离主题,我想你知道Papervision自2010年以来没有更新过。我建议尝试一个仍在开发的引擎,例如Away3D