我正在将3D资产加载到Away3D场景中,我想在代码中移动骨骼的位置.
资产负荷一切顺利的话,我抢的指针Mesh
和Skeleton
加载时:
private function onAssetComplete(evt:AssetEvent):void
{
if(evt.asset.assetType == AssetType.SKELETON){
_skeleton = evt.asset as Skeleton;
} else if (evt.asset.assetType == AssetType.MESH) {
_mesh = evt.asset as Mesh;
}
}
Run Code Online (Sandbox Code Playgroud)
资产(一个或多个)加载完成后,我有一个有效的Skeleton
和Mesh
实例,模型也是我的场景中可见.我接下来要尝试的是以下内容.
// create a matrix with the desired joint (bone) position
var pos:Matrix3D = new Matrix3D();
pos.position = new Vector3D(60, 0, 0);
pos.invert();
// get the joint I'd like to modifiy. The bone is named "left"
var joint:SkeletonJoint = _skeleton.jointFromName("left");
// assign joint position …
Run Code Online (Sandbox Code Playgroud) 我已经使用Adobe Air for Android,FLARManager,Away3DLite为Android实现了增强现实应用程序.该程序在闪存上工作正常,但是当我在手机上发布它(HTC Nexus One)或在模拟器上运行时,我的相机不会激活,我只能看到背景颜色和帧率显示.
我认为问题是我使用过的Camera3D,它是FLARManager的FLARCamera_Away3DLite.
这就是我设置相机的方式
import com.transmote.flar.camera.FLARCamera_Away3DLite;
private var camera3D:FLARCamera_Away3DLite;
this.camera3D = new FLARCamera_Away3DLite(this.flarManager, new Rectangle(0, 0, this.stage.stageWidth, this.stage.stageHeight));
Run Code Online (Sandbox Code Playgroud)
我真的很感激你能得到的任何建议.
谢谢乔治
我想在iOS上用Away3d纹理播放视频.它在Android和Windows上都很好用.该视频将在IOS的Starling上播放,所以我知道这不是视频.
这是我添加视频的方式
sphereGeometry = new SphereGeometry(5000, 64, 48);
panoTextureMaterial = new TextureMaterial(panoTexture2DBase, false, false, false);
panoVideoMesh = new Mesh(sphereGeometry, panoTextureMaterial);
panoVideoMesh.scaleX *= -1;
panoVideoMesh.rotate(Vector3D.Y_AXIS,-90);
scene.addChild(panoVideoMesh);
panoTexture2DBase.player.play();
view.render();
Run Code Online (Sandbox Code Playgroud)
在iOS上,当我尝试将其加载为视频纹理时,我从netstats获取此信息.
NetStream.Play.Start
NetStream.Play.Failed
NetStream.Play.Stop
Run Code Online (Sandbox Code Playgroud)
我正在使用Away3d NativeVideoTexture类
texture = context.createVideoTexture();
texture.attachNetStream(_player.ns);
Run Code Online (Sandbox Code Playgroud)
我认为它可能与MP4编码有关,我已经好好看看并找不到任何有效的东西,目前我在FFMEG中尝试这个
-vcodec libx264 -profile:v main -level 3.1 -crf 23 -s 1024:768 -movflags +faststart
Run Code Online (Sandbox Code Playgroud)
但我设定的似乎没有太大的区别.
知道为什么我的视频无法在iOS上加载为VideoTexture吗?
我正在寻找一个有点详细的解释,哪个3D Engine for Actionscript3是最有效,实用,可扩展,文档化,社区支持等等.当我第一次对flash和actionscript3的3D世界感兴趣时,我所知道的只是papervision3D .以我好奇的方式,我去阅读papervision3D并对缺乏教程感到震惊.后来我开始研究Away3D并发现他们的网站很容易遍历,有很多教程和易于查找的文档.
有什么我想念的吗?papervision3D是否如此优秀以至于它不需要教程和其他媒介来帮助用户采用它并开始更频繁地使用它?是否有性能提升允许这个?您建议使用哪种3D引擎?
我收到以下奇怪的错误:
ArgumentError:错误#1063:Away3DLiteSprite()上的参数计数不匹配.预计4,得0.
我有一个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和功能集,但这是我当前项目的真正障碍!
提前致谢
我正在使用Away3D检查Flash的3D功能,我在这里遵循教程.我遇到了一个重大问题.每次我在浏览器中运行我的项目时,都会收到此错误:
错误#2044:未处理的ErrorEvent:text =错误#3702:Context3D不可用.
我无法看到此错误的来源,但它发生在我的构造函数结束之后和ENTER_FRAME
处理程序启动之前.
我的代码是这样的:
package {
import away3d.containers.View3D;
import away3d.entities.Mesh;
import away3d.materials.ColorMaterial;
import away3d.primitives.SphereGeometry;
import flash.display.Sprite;
import flash.events.Event;
[SWF(backgroundColor="#000000", frameRate="60", width="1024", height="768")]
public class TestAway extends Sprite {
private var view:View3D;
public function TestAway() {
view=new View3D();
addChild(view);
var sphereGeometry:SphereGeometry=new SphereGeometry(350);
var sphereMaterial:ColorMaterial=new ColorMaterial(0xff0000);
var mesh:Mesh=new Mesh(sphereGeometry, sphereMaterial);
view.scene.addChild(mesh);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void {
view.render();
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在奇怪的是,当我在浏览器上运行它(FP 11.2)时,它不起作用(给出错误),但我可以完美地从桌面运行swf.
此外,教程页面上的示例文件运行完美.缺少什么设置,我该如何解决?
我已经从高级发布设置将外部库链接到我的fla.(它是away3d库)
舞台上什么都没有,时间线上也没有,我刚刚在文档类中添加了一些代码(见下文).
每当我在没有线的情况下运行下面的代码时:private _view:View3D
它会在大约几秒钟内快速导出,但是当我保持该行时,它在大约1分钟内输出非常慢.
如何在使用外部库时快速导出.
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.geom.Vector3D;
import away3d.primitives.PlaneGeometry;
import away3d.containers.View3D;
import away3d.entities.Mesh;
import flash.events.Event;
public class Main extends Sprite
{
private var _view:View3D;
//whenever I comment this line out, it exports fast
public function Main()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是我将away3d库链接到我的fla的方式的图像 - http://i.imgur.com/HLxZXPi.png?1
away3d ×8
flash ×4
air ×2
flartoolkit ×2
android ×1
apache-flex ×1
depth-buffer ×1
flash-cs6 ×1
flex4.6 ×1
ios ×1
stage3d ×1
video ×1