我有兴趣使用Adobe Flash Platform为手机实现增强现实应用程序.如果有任何消息来源可以让我知道如何开始,你能告诉我吗?
我不确定我需要使用什么软件来实现AR,但据我所知,我需要:
ARToolKit Marker Generator用于创建与3D图像匹配的标记,然后FLARToolKit分析来自标记和Papervision3D的图像,以创建与标记共享相同空间的对象.
如果我写的内容是正确的,请告诉我如何在Adobe Flash平台上开始实施,能否告诉我?
谢谢
我用Papervison3D创建了这个Rubiks Cube.通过一些资源,我创建了一个内部有27个微型管的立方体(3*3*3 = 27).在鼠标移动时旋转Rubiks立方体已经完成.(我不旋转相机.)
Rubiks Cube的所有行为都已存在.但是我在最后阶段有点陷入困境.
当我使用它时,就像我使用普通的Rubiks Cube一样,它工作正常,此外我知道默认的Euler旋转值在一段时间后不再可靠.我需要的是将Rubiks立方体旋转到选定的一侧,然后在Z轴上旋转Rubiks立方体,使小型立面朝上.我更喜欢使用TweenMax为它设置动画,但我真的被卡住,因为我需要四元数旋转.
我知道Rubiks Cube本身的精选面孔.我知道Rubiks Cube的Euler旋转使用Matrix3D.matrix2euler(_rubiksCube.transform);我需要的是将它旋转到选定的面,例如当前旋转时x: -20, y: 35, z: 10,我选择它必须旋转到的rubiksCube的背面x:0, y: 180, z: 0.
我需要的是将其更改为四元数值并将Rubiks多维数据集旋转到新的四元数值.之后,必须将Rubiks立方体旋转到其z轴上,使其朝向所选的微型管面朝上.
这是我在拖动/旋转Rubiks Cube时使用的代码
private function onMouseMove( e : MouseEvent) : void {
var m : Matrix3D;
m = Matrix3D.rotationY( (mouseX - _mouseDownPoint.x) / 120 );
m = Matrix3D.multiply( m, Matrix3D.rotationX( -(mouseY - _mouseDownPoint.y) / 120 ));
_rubiksCube.transform = Matrix3D.multiply( m, _rubiksCube.transform );
_mouseDownPoint.x = mouseX;
_mouseDownPoint.y = mouseY;
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个有点详细的解释,哪个3D Engine for Actionscript3是最有效,实用,可扩展,文档化,社区支持等等.当我第一次对flash和actionscript3的3D世界感兴趣时,我所知道的只是papervision3D .以我好奇的方式,我去阅读papervision3D并对缺乏教程感到震惊.后来我开始研究Away3D并发现他们的网站很容易遍历,有很多教程和易于查找的文档.
有什么我想念的吗?papervision3D是否如此优秀以至于它不需要教程和其他媒介来帮助用户采用它并开始更频繁地使用它?是否有性能提升允许这个?您建议使用哪种3D引擎?
我有一个非常大的Flex&Papervision3D应用程序,可以不断创建和销毁对象.它也可以加载和卸载SWF资源文件.当它运行时SWF慢慢消耗内存直到大约2GB,当它晃动播放器时.显然,我很确定我放弃了对不再需要的实例的引用,期望GC能够完成它的工作.但我很想知道问题所在.
我已经尝试使用分析器及其选项捕获内存快照等 - 但我的问题仍然是回避.我认为使用调试Flash播放器也存在已知问题吗?但我也不喜欢使用发布版本.
如何使用FLEX/AS3跟踪内存泄漏问题?您用于定位消费的一些策略,技巧或工具是什么
apache-flex debugging memory-leaks actionscript-3 papervision3d
希望这次是一个明智的问题......
在图片中看到上半部分纹理看起来是否正常,但是下半部分(在它旋转一点之后)纹理分解,你可以看到形状的内部?多边形已经消失了吗?
这叫什么问题?我需要知道,所以我知道在修复它时需要注意什么!
顺便说一句,我在Papervision中这样做.如果你有机会知道修复(或者如果可能的话),如果你能指出我正确的方向,我会允许你对自己感觉特别好.
这个叫什么?http://i40.tinypic.com/6f40f4.jpg
谢谢堆!
最终,papervision3d(Flash的流行3D渲染包)如何将变换后的纹理绘制到屏幕上?
它是在内部使用Flash的任何渲染设备 - 即通过将纹理绘制到DisplayObjects并转换它们,还是使用3D MovieClips?或者过滤器?或者它最终只是从纹理中读取像素并将它们绘制到输出中,就像在任何软件平台中一样?
我问,因为直截了当的答案将是后者,但经过一些测试后,似乎getPixel并setPixel没有足够快到这种方法,所以似乎必须有一些更神秘的事情发生.
感谢您的任何信息!
编辑 - 我对答案的总结:Papervision本身并不进行透视变换.它只对每个纹理三角形进行缩放和倾斜变换,如果使用足够的三角形,则会产生透视错觉.仿射变换使用Flash的渲染设备,因此避免了像素操作的成本.
我有一个flex应用程序和一个papervision BasicView.我想在papervision类中添加一个新的flex UIComponent(例如一个按钮).我在下面发布了完整的示例代码.它有效,但我希望能够在没有"(this.parent.parent as Group).addElement(button);"的情况下完成我的目标.线.
<!--Application MXML-->
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="50" minHeight="50"
creationComplete="Init()" applicationComplete="Start()">
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
import spark.components.Button;
public var start:QuickStart;
public function Init():void
{
start = new QuickStart();
var uicomp:UIComponent = new UIComponent();
addElement( uicomp );
uicomp.addChild( start );
}
public function Start():void
{
start.GoTime();
}
]]>
</fx:Script>
</s:Application>
//QuickStart.as
package{
import org.papervision3d.view.BasicView;
public class QuickStart extends BasicView
{
public function QuickStart()
{
super(500, 500, true, true);
}
public function GoTime():void
{
var …Run Code Online (Sandbox Code Playgroud) 3d ×2
apache-flex ×2
flash ×2
actionscript ×1
air ×1
android ×1
away3d ×1
debugging ×1
flash-cs5 ×1
flex4 ×1
math ×1
memory-leaks ×1
polygon ×1
quaternions ×1
rendering ×1