标签: stage3d

在GPU上绘制二次曲线

我的任务是通过Stage3d(Adobe Flash)技术渲染二次贝塞尔曲线(路径),该技术没有开箱即用的任何扩展(而OpenGl拥有它,据我所知).是的,有一个Starling-Extension-Graphics,但是它使用简单的方法将曲线段划分为许多直线,这为我的长曲线路径生成了很多三角形.

所以..有一种完美的方式来渲染Loop和Blinn的分辨率独立形状.我已经阅读了GPUGems3文章(gpugems3_ch25.html)并将该片段着色器移植到AGAL2:

二次曲线像素着色器

float4 QuadraticPS(float2 p : TEXCOORD0,  
  float4 color : COLOR0) : COLOR  
{  
  // Gradients  
   float2 px = ddx(p);  
   float2 py = ddy(p);  
  // Chain rule  
   float fx = (2*p.x)*px.x - px.y;  
   float fy = (2*p.x)*py.x - py.y;  
  // Signed distance  
   float sd = (p.x*p.x - p.y)/sqrt(fx*fx + fy*fy);  
  // Linear alpha  
   float alpha = thickness - abs(sd);  
  if (alpha > 1)       // Inside  
    color.a = 1;  
  else if (alpha < 0)  // Outside  
    clip(-1);  
  else                   
  // …
Run Code Online (Sandbox Code Playgroud)

algorithm bezier triangulation fragment-shader stage3d

9
推荐指数
1
解决办法
2088
查看次数

如何在模型的本地空间(非全局)中组合X,Y和Z旋转?

我开始在Molehill,并且在掌握Matrix3D时遇到了很多问题.我的第一个问题是如何管理描述单个模型方向的Matrix3D.

我使用Matrix3D.appendRotation()来做到这一点.但是根据我附加的顺序,我得到了不同的结果(显然,因为我在全球空间中一次旋转一个).我知道这是一个常见的问题,我已经用3d软件建模遇到了它.但这一次,我必须以编程方式修复它.这是我需要帮助的地方.

首先,如果有任何混淆,这是图片中的问题:

第1步:我渲染一个模型.

开始的位置

步骤2a:我在X轴上旋转它.看起来不错!

X轴旋转

步骤2b:我在Z轴上旋转它.看起来不错!

Z轴旋转

所以...如果我在模型的X和Z轴上旋转我想要这个:

想要的XZ旋转

但是,悲伤,我明白了:

在此输入图像描述

我可以看到问题.我在全球空间一次附加一个轮换.我需要在对象的本地空间中旋转.我不知道如何做到这一点或我甚至应该搜索什么(术语等).代码很简单(和错误):

modelLocalMatrix.identity();
modelLocalMatrix.appendRotation(modelZRot, Vector3D.Z_AXIS);
modelLocalMatrix.appendRotation(modelXRot, Vector3D.X_AXIS);
//eventually y-axis rotation as well...
renderMatrix.append(modelLocalMatrix);
Run Code Online (Sandbox Code Playgroud)

我猜测不是使用Vector3D轴常数,而是想使用一些规范化的矢量和一些......呃,东西......代替modelZRot,modelXRot,最后是modelYRot.谁能告诉我上面应用所需类型的旋转的最佳实践解决方案是什么?

更新:花了一天时间点击"书籍"(在YouTube上称为KhanAcademy)并在此处开始演示:3D旋转矩阵的数学我偶然发现了一种非常接近我想要的"看待"方法解.不幸的是,我只有50%的人理解它.我仍然希望有人可以对这个话题有所了解!

var angleOfRotation:Number = Math.PI / 2; //90 degrees...
var axisOfRotation:Vector3D = new Vector3D(0, 1, 0); //some point to look at... 
//normalize the vector!
axisOfRotation.normalize();
var x:Number = axisOfRotation.x;
var y:Number = axisOfRotation.y;
var z:Number = axisOfRotation.z;
var c:Number = Math.cos(angleOfRotation);
var s:Number = Math.sin(angleOfRotation);
var t:Number = 1 - c;

//Graphics Gems …
Run Code Online (Sandbox Code Playgroud)

rotation actionscript-3 matrix-multiplication molehill stage3d

8
推荐指数
1
解决办法
2007
查看次数

移动Adobe Flash AIR上的摄像机和Stage3D.AIR上的增强现实

快速问题

如何使用Stage3D在Adobe AIR应用程序上快速显示网络摄像头?


详细的问题

关于

我的目标是创建AR(增强现实)移动应用程序的原型.我已选择Adobe Flash AIR在移动和AIR应用程序上获得良好的3D图形支持,可轻松移植到许多移动平台(iOS,Android,Blackberry Playbook).

目的

我想展示复杂的3D模型(所以我需要使用Stage3D).在Front Camera的视频下方.像往常一样AR应用.

这是一个例子

http://www.augmentedplanet.com/wp-content/uploads/2009/11/AR-Dungeons-Challenge.JPG

问题

Stage3D根本不透明所以我不能使用StageVideo快速显示Camera的内容,因为StageVideo在Stage3D下没有看到.

所以

只有我发现的决定 - 创建具有动态纹理更新的平面.

以下是webcamvideo与Starling Framework(Stage3D)集成的示例.但是对于许多普通的移动设备,我们得到如此大的纹理更新(几乎与屏幕分辨率一样大),任何应用程序都会降低到低fps甚至崩溃.我在Galaxy Note上做了什么.凭借320x200的纹理尺寸,它具有相当不错的性能,但在AR应用程序看起来很难看.

那么在AIR上创建AR的任何出色解决方案都是如此?有人有同样的挑战吗?

webcam mobile augmented-reality stage3d starling-framework

6
推荐指数
1
解决办法
2056
查看次数

FLEX Stage 3D中的像素大小

我正在尝试使用FLEX Stage 3D(使用minko引擎)进行一些像素艺术.我希望视口上的像素大小为4"真实像素".

我想我不是很清楚,所以让我们举一个例子.这就是我现在拥有的: 在此输入图像描述

这就是我想要的(所以它看起来像像素艺术). 在此输入图像描述 关键是我完全不知道该怎么做.我已经尝试重新调整视口大小,但没有成功.

任何想法都会受到欢迎.

apache-flex pixel stage3d

5
推荐指数
1
解决办法
226
查看次数

用starling在StageVideo上播放视频

我在as3移动项目上工作,我使用starling作为Framework,我如何使用舞台视频而不是视频播放器添加关于starling的视频.舞台视频选项对性能来说要好得多.任何人建议我.

actionscript-3 stage3d starling-framework

5
推荐指数
1
解决办法
2378
查看次数

Away3D Stage3DProxy绘图顺序

我有一个Flash应用程序,其中两个3d视图共享相同的Stage3DProxy,因为我需要一个在任何时候覆盖/绘制在另一个上.但是,它们似乎共享相同的3d空间/ z缓冲区(?).

我的更新功能目前看起来像这样:

private function onEnterFrame(event : Event) : void {   
    stage3DProxy.clear();
    away3DView.render();
    away3DView2.render();
    stage3DProxy.present();
}
Run Code Online (Sandbox Code Playgroud)

显然,这本身还不够 - 我在某处读到了可以使用setDepthTest方法,例如:

stage3DProxy.context3D.setDepthTest(false, Context3DCompareMode.NEVER);
Run Code Online (Sandbox Code Playgroud)

...在每个视图的render()调用之间将它设置为不同的模式,但我对它的工作原理并不清楚,并且文档在实际上非常薄.我玩过,在渲染调用之间设置不同的东西,但没有快乐.

设置Stage3DProxy的唯一例子是使用一个Away3D视图和两个starling - 这不是我想要的.我在他们的论坛上阅读了一条评论,其中说你必须在大约'其他地方'指定某些setDepthTest设置,但是没有详细说明它们的位置或者它们需要设置的位置,这听起来像是一个非常黑客的应该是非常基本的东西!

如果有人可以提供帮助我会非常感激,或者如果有人知道另一种方法来做这件事 - 强迫一个特定的绘图顺序似乎应该是一个相对微不足道的任务但我发现没有任何有用的事情,我想坚持Away3D因为它是一个很好的API和功能集,但这是我当前项目的真正障碍!

提前致谢

flash actionscript-3 away3d depth-buffer stage3d

5
推荐指数
1
解决办法
502
查看次数

模型视图投影矩阵是应该在Actionscript 3中构建还是在顶点着色器中的GPU上构建?

我见过的所有Stage3D示例都在每个渲染事件的AS3中构建模型视图投影矩阵.例如:

modelMatrix.identity();
// Create model matrix here
modelMatrix.translate/rotate/scale
...
modelViewProjectionMatrix.identity();
modelViewProjectionMatrix.append( modelMatrix );
modelViewProjectionMatrix.append( viewMatrix );
modelViewProjectionMatrix.append( projectionMatrix );
// Model view projection matrix to vertex constant register 0
context3D.setProgramConstantsFromMatrix( Context3DProgramType.VERTEX, 0, modelViewProjectionMatrix, true );
...
Run Code Online (Sandbox Code Playgroud)

顶点着色器中的单行将顶点转换为屏幕空间:

m44 op, va0, vc0
Run Code Online (Sandbox Code Playgroud)

有这样做的理由吗?这些计算不是GPU的用途吗?

为什么不在更改时更新视图和投影矩阵,并将每个矩阵上传到单独的寄存器:

// Projection matrix to vertex constant register 0
// This could be done once on initialization or when the projection matrix changes
context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, projectionMatrix, true);
// View matrix to vertex constant register 4
context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, viewMatrix, …
Run Code Online (Sandbox Code Playgroud)

shader gpu actionscript-3 stage3d

5
推荐指数
1
解决办法
791
查看次数

在2D空间中将纹理(BitmapData)渲染到Stage3D所需的低级代码是什么?

我查看了以下网站,了解有关编写AGAL以向Stage3D对象渲染纹理/位图的一些信息:

http://iflash3d.com/shaders/my-name-is-agal-i-come-from-adobe-1/

但它似乎更多地涉及如何在3D空间中创建对象.也许这是无法避免的?

但无论如何我会问这个问题:

什么是裸骨必需的AGAL代码和AS3代码写入以呈现多个精灵Stage3D

注意:不需要滤镜,效果或着色器 - 只需位置,缩放和旋转变换.此外,我不是在寻找现有的第三方API.我想自己试一下这种低级语言.

flash actionscript-3 low-level molehill stage3d

2
推荐指数
1
解决办法
1714
查看次数

Adobe Air App的最低IOS版本

我正在使用Adobe Air 3.2使用新的舞台3D功能为IOS编写应用程序.我可以定位的最低IOS版本是多少?

另外,为了定位新的Ipad 3,您似乎需要指示编译器引用IOS 5.1.这是否意味着如果我使用该设置进行编译,我将无法在较低的IOS版本上运行我的应用程序?

air ios stage3d

1
推荐指数
1
解决办法
3792
查看次数

我已经开始使用Stage3D了.Stage3D中哪些类可用?

Stage3D是否支持这些类?或者是否存在等价物或类似的类?

flash.display.BitmapData;
flash.display.GraphicsSolidFill;
flash.display.GraphicsStroke;
flash.display.GraphicsPath;
flash.display.IGraphicsData;
flash.display.Shape;
flash.filters.BlurFilter;
flash.geom.ColorTransform;
Run Code Online (Sandbox Code Playgroud)

actionscript stage3d

0
推荐指数
1
解决办法
589
查看次数