- 浏览: 175952 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
xiangyufangai:
很好很强大膜拜中哈哈!!
VB 两个字符串处理函数(类似Left/Mid/Right/Split的结合) -
hellohank:
这个……叫摘要算法,不叫加密算法~
Java实现的加密工具类(支持MD5和SHA) -
NIUCH1029291561:
接口有问题奥
网银在线支付接口和应用 -
yeuego:
能幫你就行了
MySQL索引分析 -
ForgiDaved:
很给力的介绍。记得前段时间给一个系统加功能,设计的表没有 ...
MySQL索引分析
package
{
import caurina.transitions.Tweener;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.filters.BlurFilter;
import flash.filters.GlowFilter;
import flash.geom.ColorTransform;
import flash.text.TextField;
import org.papervision3d.core.math.Number3D;
import org.papervision3d.core.math.Quaternion;
import org.papervision3d.core.proto.CameraObject3D;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.view.layer.util.ViewportLayerSortMode;
public class CastView extends BasicView
{
public var plane:Plane;
public var s:Sphere;
public var l:PointLight3D;
public var dae:DAE;
private var cloned:DAE;
public var sun:Sphere=new Sphere(new ColorMaterial(0xE8F471), 10, 2, 2);
public var shadowCaster:ShadowCaster=new ShadowCaster("shadow1", 0, BlendMode.NORMAL, 0.75, [new BlurFilter(4, 4, 2)]);
private var movieMaterial:MovieMaterial;
[Embed(source="dae/snakeskin.jpg")]
public var texture:Class;
[Embed(source="dae/male.png")]
public var cowTexture:Class;
public var ox:Number=0;
public var sx:Number=0;
public var oy:Number=0;
public var sy:Number=0;
private var rotationY:Number=0;
public var mouseDown:Boolean=false;
public var useSphere:Boolean=false;
public var cull:Boolean=false;
private var useShader:Boolean=true;
private var isParser:Boolean = true;
public function CastView( viewportWidth:Number=640,
viewportHeight:Number=320,
scaleToStage:Boolean=true,
interactive:Boolean=false,
cameraType:String="CAMERA3D")
{
super(viewportWidth, viewportHeight, scaleToStage, interactive, cameraType);
viewport.containerSprite.sortMode=ViewportLayerSortMode.INDEX_SORT;
var shadier:ColorTransform=new ColorTransform(0.46, 0.46, 0.46);
var movie:Sprite=new Sprite();
shadowCaster.setType(ShadowCaster.DIRECTIONAL);
var bmp:BitmapData=Bitmap(new texture()).bitmapData;
movie.graphics.beginBitmapFill(bmp, null, true);
movie.graphics.drawRect(0, 0, 512, 512);
movie.graphics.endFill();
movie.transform.colorTransform=shadier;
var movieMat:MovieMaterial=new MovieMaterial(movie, false, true, true);
plane=new Plane(movieMat, 2000, 2000, 1, 1);
scene.addChild(plane);
plane.pitch(90);
viewport.getChildLayer(plane).layerIndex=-100;
camera.y=450;
scene.addChild(sun);
viewport.getChildLayer(sun).filters=[new GlowFilter(0xE8F471)];
viewport.getChildLayer(sun).layerIndex=2000;
l=new PointLight3D();
l.x=0;
l.y=400;
l.z=300;
movieMaterial=new MovieMaterial(new cowTexture());
dae=new DAE();
var mats:MaterialsList=new MaterialsList();
mats.addMaterial(movieMaterial, "mat0");
dae.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoad);
dae.addEventListener(FileLoadEvent.LOAD_PROGRESS , loadProgress)
dae.addEventListener(FileLoadEvent.ANIMATIONS_COMPLETE , animComplete)
dae.load('dae/peopleMotion.xml', mats);
addEventListener(Event.ADDED_TO_STAGE, onStage);
}
private function animComplete(e:FileLoadEvent):void
{
this.removeChild(txt);
isParser = false;
}
private function loadProgress(e:FileLoadEvent):void
{
txt.text = '加载swf中 ' + Math.floor( e.bytesLoaded/e.bytesTotal*100 ) + ' %'
}
private function onAnimProgress(e:ProgressEvent):void
{
txt.text = '解析xml中 ' + Math.floor( e.bytesLoaded/e.bytesTotal*100 ) + ' %'
}
private var txt:TextField;
public function createDirections():void
{
txt = new TextField();
txt.selectable=false;
txt.width=400;
txt.height=400;
txt.textColor = 0xffffff
txt.text='解析xml中'
txt.x = 100 ;
txt.y = 100 ;
//t.setTextFormat(new TextFormat(font, 14, 0x606060));
addChild(txt);
}
public function onStage(e:Event):void
{
createDirections();
}
public function newTween():void
{
Tweener.addTween(l, { x:Math.random() * 1000 - 500,
z:Math.random() * 800 - 400,
y:Math.random() * 200 + 200,
time:Math.random() * 4 + 2,
onComplete:newTween,
delay:Math.random() * 2});
}
private function onLoad(e:Event):void
{
dae.parser.addEventListener(ProgressEvent.PROGRESS , onAnimProgress)
scene.addChild(dae);
dae.scale=2;
dae.yaw(360);
viewport.getChildLayer(dae).layerIndex=1;
newTween();
addEventListener(Event.ENTER_FRAME, tick);
}
public function tick(e:Event):void
{
sun.copyPosition(l);
if(isParser) return ;
updateCamera();
singleRender();
shadowCaster.invalidate();
shadowCaster.castModel(dae, l, plane, !useSphere, cull);
}
private function updateCamera():void
{
if (mouseDown)
{
sx+=(ox - viewport.containerSprite.mouseX) * 2;
ox=viewport.containerSprite.mouseX;
sy+=(oy - viewport.containerSprite.mouseY);
oy=viewport.containerSprite.mouseY;
}
sx*=0.94;
sy*=0.94;
rotationY+=sy / 19000;
if (rotationY > 0.6)
{
rotationY=0.6 - sy / 19000;
sy*=-0.6;
}
else if (rotationY < -0.2)
{
rotationY=-0.2 - sy / 19000;
sy*=-0.6;
}
orbit(camera, plane, "x", sx / 19000);
orbit(camera, plane, "y", sy / 19000);
}
public function orbit(camera:CameraObject3D, target:DisplayObject3D, dir:String="y", angle:Number=0, useAxis:Number3D=null):void
{
var ax:Number3D=useAxis;
var up:Number3D=new Number3D(camera.transform.n12, camera.transform.n22, camera.transform.n32);
if (ax == null)
{
if (dir == "x")
{
ax=up;
}
else if (dir == "y")
{
var dif:Number3D=new Number3D(camera.x - target.x, camera.y - target.y, camera.z - target.z);
ax=Number3D.cross(up, dif);
}
}
ax.normalize();
var startQuat:Quaternion=new Quaternion(camera.x - target.x, camera.y - target.y, camera.z - target.z, 0);
var rotQuat:Quaternion=Quaternion.createFromAxisAngle(ax.x, ax.y, ax.z, angle);
rotQuat.normalize();
var result:Quaternion=Quaternion.multiply(Quaternion.multiply(rotQuat, startQuat), Quaternion.conjugate(rotQuat));
camera.x=target.x + result.x;
camera.y=target.y + result.y;
camera.z=target.z + result.z;
camera.lookAt(target, up);
}
}
}
package
{
import caurina.transitions.Tweener;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.filters.BlurFilter;
import flash.filters.GlowFilter;
import flash.geom.ColorTransform;
import flash.text.TextField;
import org.papervision3d.core.math.Number3D;
import org.papervision3d.core.math.Quaternion;
import org.papervision3d.core.proto.CameraObject3D;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.view.layer.util.ViewportLayerSortMode;
public class CastView extends BasicView
{
public var plane:Plane;
public var s:Sphere;
public var l:PointLight3D;
public var dae:DAE;
private var cloned:DAE;
public var sun:Sphere=new Sphere(new ColorMaterial(0xE8F471), 10, 2, 2);
public var shadowCaster:ShadowCaster=new ShadowCaster("shadow1", 0, BlendMode.NORMAL, 0.75, [new BlurFilter(4, 4, 2)]);
private var movieMaterial:MovieMaterial;
[Embed(source="dae/snakeskin.jpg")]
public var texture:Class;
public var ox:Number=0; public var useSphere:Boolean=false; private var isParser:Boolean = true; viewport.containerSprite.sortMode=ViewportLayerSortMode.INDEX_SORT; var shadier:ColorTransform=new ColorTransform(0.46, 0.46, 0.46); movie.graphics.beginBitmapFill(bmp, null, true); movie.transform.colorTransform=shadier; var movieMat:MovieMaterial=new MovieMaterial(movie, false, true, true); plane=new Plane(movieMat, 2000, 2000, 1, 1); scene.addChild(sun); movieMaterial=new MovieMaterial(new cowTexture()); dae=new DAE(); newTween(); public function tick(e:Event):void sy+=(oy - viewport.containerSprite.mouseY); sx*=0.94; if (rotationY > 0.6) } orbit(camera, plane, "x", sx / 19000); var ax:Number3D=useAxis; if (ax == null) var startQuat:Quaternion=new Quaternion(camera.x - target.x, camera.y - target.y, camera.z - target.z, 0); var result:Quaternion=Quaternion.multiply(Quaternion.multiply(rotQuat, startQuat), Quaternion.conjugate(rotQuat)); camera.lookAt(target, up);
[Embed(source="dae/male.png")]
public var cowTexture:Class;
public var sx:Number=0;
public var oy:Number=0;
public var sy:Number=0;
private var rotationY:Number=0;
public var mouseDown:Boolean=false;
public var cull:Boolean=false;
private var useShader:Boolean=true;
public function CastView( viewportWidth:Number=640,
viewportHeight:Number=320,
scaleToStage:Boolean=true,
interactive:Boolean=false,
cameraType:String="CAMERA3D")
{
super(viewportWidth, viewportHeight, scaleToStage, interactive, cameraType);
var movie:Sprite=new Sprite();
shadowCaster.setType(ShadowCaster.DIRECTIONAL);
var bmp:BitmapData=Bitmap(new texture()).bitmapData;
movie.graphics.drawRect(0, 0, 512, 512);
movie.graphics.endFill();
scene.addChild(plane);
plane.pitch(90);
viewport.getChildLayer(plane).layerIndex=-100;
camera.y=450;
viewport.getChildLayer(sun).filters=[new GlowFilter(0xE8F471)];
viewport.getChildLayer(sun).layerIndex=2000;
l=new PointLight3D();
l.x=0;
l.y=400;
l.z=300;
var mats:MaterialsList=new MaterialsList();
mats.addMaterial(movieMaterial, "mat0");
dae.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoad);
dae.addEventListener(FileLoadEvent.LOAD_PROGRESS , loadProgress)
dae.addEventListener(FileLoadEvent.ANIMATIONS_COMPLETE , animComplete)
dae.load('dae/peopleMotion.xml', mats);
addEventListener(Event.ADDED_TO_STAGE, onStage);
}
private function animComplete(e:FileLoadEvent):void
{
this.removeChild(txt);
isParser = false;
}
private function loadProgress(e:FileLoadEvent):void
{
txt.text = '加载swf中 ' + Math.floor( e.bytesLoaded/e.bytesTotal*100 ) + ' %'
}
private function onAnimProgress(e:ProgressEvent):void
{
txt.text = '解析xml中 ' + Math.floor( e.bytesLoaded/e.bytesTotal*100 ) + ' %'
}
private var txt:TextField;
public function createDirections():void
{
txt = new TextField();
txt.selectable=false;
txt.width=400;
txt.height=400;
txt.textColor = 0xffffff
txt.text='解析xml中'
txt.x = 100 ;
txt.y = 100 ;
//t.setTextFormat(new TextFormat(font, 14, 0x606060));
addChild(txt);
}
public function onStage(e:Event):void
{
createDirections();
}
public function newTween():void
{
Tweener.addTween(l, { x:Math.random() * 1000 - 500,
z:Math.random() * 800 - 400,
y:Math.random() * 200 + 200,
time:Math.random() * 4 + 2,
onComplete:newTween,
delay:Math.random() * 2});
}
private function onLoad(e:Event):void
{
dae.parser.addEventListener(ProgressEvent.PROGRESS , onAnimProgress)
scene.addChild(dae);
dae.scale=2;
dae.yaw(360);
viewport.getChildLayer(dae).layerIndex=1;
addEventListener(Event.ENTER_FRAME, tick);
}
{
sun.copyPosition(l);
if(isParser) return ;
updateCamera();
singleRender();
shadowCaster.invalidate();
shadowCaster.castModel(dae, l, plane, !useSphere, cull);
}
private function updateCamera():void
{
if (mouseDown)
{
sx+=(ox - viewport.containerSprite.mouseX) * 2;
ox=viewport.containerSprite.mouseX;
oy=viewport.containerSprite.mouseY;
}
sy*=0.94;
rotationY+=sy / 19000;
{
rotationY=0.6 - sy / 19000;
sy*=-0.6;
else if (rotationY < -0.2)
{
rotationY=-0.2 - sy / 19000;
sy*=-0.6;
}
orbit(camera, plane, "y", sy / 19000);
}
public function orbit(camera:CameraObject3D, target:DisplayObject3D, dir:String="y", angle:Number=0, useAxis:Number3D=null):void
{
var up:Number3D=new Number3D(camera.transform.n12, camera.transform.n22, camera.transform.n32);
{
if (dir == "x")
{
ax=up;
}
else if (dir == "y")
{
var dif:Number3D=new Number3D(camera.x - target.x, camera.y - target.y, camera.z - target.z);
ax=Number3D.cross(up, dif);
}
}
ax.normalize();
var rotQuat:Quaternion=Quaternion.createFromAxisAngle(ax.x, ax.y, ax.z, angle);
rotQuat.normalize();
camera.x=target.x + result.x;
camera.y=target.y + result.y;
camera.z=target.z + result.z;
}
}
}
发表评论
-
Dragon-Studio 之 Flash Alternativa 3D引擎 基础教程
2011-03-09 13:34 970欢饮大家来到Dragon的 ... -
Flash 3D引擎比较
2011-03-09 13:33 1129最近做的一个项目中需要用到 3D,所以粗略的学习了一些目前Fl ... -
基于Flash的3D引擎-Alternativa3D
2011-03-09 10:03 1532Alternativa3D 是由 Altenativa ... -
Flash 3D引擎比较
2011-03-02 00:49 867http://blog.sina.com.cn/s/blog_ ... -
3角函数转化函数整理
2011-03-02 00:42 618先发一不分//有空再补全~~class Math2 { var ... -
ActionScript 3.0 基础之以文本形式、XML形式和JSON形式与ASP.NET通信
2011-03-02 00:26 1157介绍Flash ActionScript 3.0 以文本形式与 ... -
AS3的A寻路代码,了解一下
2011-03-02 00:01 941地形数据不属于A*寻路 ... -
FLASH与密码学-常用加密算法的AS3.0实现
2011-03-01 23:49 1502如果对技术有兴趣的, ... -
AS3.0的加载机制
2011-03-01 23:44 1131还是坚持自己的原则,从 ... -
As3.0 xml + Loader
2011-03-01 23:43 965上面的地址是曾经也就是刚刚过去的一个月前学习AS2.0的时 ... -
AS3.0 styleSheet
2011-03-01 23:41 1775styleSheet和TextFormat类似,也是用来定义文 ... -
Flash Socket通信的安全策略问题
2011-02-27 23:38 806收录一下先,确实解决了问题。 将flash发布为htm ... -
纯AS代码实现可预览本地图片的flash上传客户端(AS3)
2011-02-15 22:30 841需要Flash Player 10+版本的支持,原理就是主要利 ... -
Flash 3D引擎比较
2011-02-15 21:27 1178转载此文目的是让喜爱研究Flash 3D的朋友能有个大致了解, ... -
AS3.0 styleSheet
2011-02-15 17:33 1541Flash Player 支持原 CSS1 规范 (www.w ...
相关推荐
在本文中,我们将深入探讨如何使用Cesium框架来单独加载3D模型,特别是不包含地球背景的场景。Cesium是一个强大的开源JavaScript库,专为在Web浏览器中展示高精度的3D地理空间数据而设计。它广泛应用于地理信息系统...
在提供的文件"CC3HelloWorldHuman"中,很可能包含了一个简单的Cocos3d示例项目,演示了如何在Xcode中加载和操作3D人物。这个示例可能会有初始化人物、播放动画和响应用户交互的代码,是初学者了解3D游戏开发的好起点...
【cocos creator】2.4.10,2d人物+3d背景,人物移动,透视视角
3D人物创建示例源码 程序介绍: Silverlight 5和Windows Phone 7.1都已具备SL.XNA模式,这意味着我们可以在相关平台上制作高性能的3D游戏及软件产品而无需二次编码。本节,我将借助一些工具为大家讲解SL.XNA的3D...
4. **加载和动画**:利用Three.js加载3D模型,设置动画关键帧或使用骨骼动画系统使人物跳舞。 5. **定位与跟踪**:结合aframe-ar.js,让3D人物根据摄像头捕获的现实环境信息进行定位,使其仿佛站在真实的地面上跳舞...
在Android平台上开发3D应用,实现人物行走动画是一项复杂但有趣的技术挑战。本文将深入探讨如何利用OpenGL ES,一个在Android系统中广泛使用的图形库,来创建逼真的3D人物行走效果。 首先,我们需要理解3D图形的...
在文件列表中,"游戏3111彭群(表情).max"可能是包含预设表情的3Dmax场景文件,艺术家可以通过加载这个文件来查看和学习已有的表情设置。而"MAXFILES.TXT"可能是一个文本文件,包含了关于3Dmax文件的相关信息,例如...
- **AssetBundle**:为了优化性能,Unity3D提供了AssetBundle功能,允许你将不常用或大型的资源(如不同服装)打包成单独的文件,在需要时动态加载。ReLoading可能就是一个AssetBundle文件,用于存储人物的不同服装...
.pmx是MikuMikuDance(MMD)软件所采用的一种3D模型文件格式,主要用于存储三维人物、道具等模型数据。这种格式由日本公司Pony Canyon为MMD开发,以支持其用户友好的模型编辑和动画制作。在本文中,我们将深入探讨....
在3D游戏开发中,人物模型的创建与动画制作是一项至关重要的任务,它涉及到许多复杂的编程和艺术设计技术。这个名为“3D游戏人物”的压缩包文件很可能包含了用于创建3D游戏角色行走动画的相关源码。从描述来看,这...
1. **模型加载**:首先,程序需要加载3D人物模型,这通常是以OBJ、3DS或FBX等格式的文件。模型文件包含了顶点信息、纹理坐标、法线向量等数据,这些数据会被解析并存储在内存中。 2. **场景构建**:在3D空间中,...
这个“Opengl写的3d人物模型”项目显然利用了OpenGL的功能来构建一个能够行走、旋转并且支持纹理贴图的三维人物模型。下面将详细介绍相关知识点。 1. **OpenGL基础知识**:OpenGL是一个跨语言、跨平台的应用程序...
在本主题“Unity3D人物模型”中,我们将深入探讨与Unity3D中的人物模型相关的各种技术和实践。 1. **模型导入**:Unity支持多种格式的人物模型,如.fbx、.obj和.collada等。这些文件包含了3D几何体、纹理、骨骼动画...
每个文件都定义了一个3D形状,可能是人物或物体的模型。加载这些文件后,程序将使用解析的顶点、纹理坐标和面数据在屏幕上构建相应的3D形状。 关于鼠标旋转,项目很可能使用了鼠标监听器来捕捉用户的输入。当用户...
"网狐6603人物3D桌子实现"是一个针对特定游戏引擎——网狐6603的3D场景开发实例。网狐6603是一款流行的国产游戏引擎,它提供了丰富的功能和工具,使得开发者能够快速构建高质量的3D游戏。 在这个项目中,"3D桌子...
加载JSON模型到Three.js通常分为两个步骤:加载模型数据和创建3D对象。 1. 加载模型数据: 使用Three.js内置的`Loader`类,例如`JSONLoader`,可以异步加载JSON文件。首先,创建一个`JSONLoader`实例,然后调用其`...
在给定的压缩包文件中,"DX 3D游戏 天空,地形,雾化,公告板,人物"这一标题揭示了几个重要的知识点,包括天空盒、地形渲染、雾化效果、公告板的实现以及角色动画与摄像机控制。接下来,我们将深入探讨这些关键概念...
pose studio动漫人物模型制作软件是一款非常牛逼专业制作动漫人物的动作模型模型的软件,可快速制作并生成3D任务模型,所...软件能够加载含有骨骼的3d模型,可读取的3D人物模型格式有FBX、LWO、LWS、OBJ、M3C(仅支持
在这个“unity人物模型资源包”中,包含的是几个可以在Unity环境中使用的3D人物模型,分别是“挥着翅膀的女孩”、“椅子”以及“美丽的女孩”。值得注意的是,这些模型都没有附带动画,这意味着在导入Unity后,你...
"unity3d人物换装"这个主题聚焦于在Unity3D中实现角色服装的动态更换功能,这对于创建互动性强的游戏或者虚拟体验至关重要。下面将详细阐述Unity3D中的人物换装技术及其相关知识点。 首先,人物模型在Unity3D中通常...