立方体的着色,阴影效果,过度效果
来源:互联网 发布:网络编辑员 编辑:程序博客网 时间:2024/04/29 23:35
April 28th, 2008 | Flash Fun
If you have been visiting this current incarnation of this site since opening day, you may remember that this little Flash-thing used to be part of the original version of the header.
It gave me numerous headaches primarily due to this problem, so I decided to remove it and publish the source instead.
It's really pretty basic - a cube primitive, a FlatShadeMaterial, a GradientGlowFilter, with some random elastic rotation done with Tweener - but I suspect that it could come very handy especially for those who are just starting with Papervision3D. Have fun with it.
Here's the source (of course you will need the Papervision3D Great White branch and Tweener to run it):
// Shaded Papervision Cube with Tweener (C) edvardtoth.com
package {
import flash.display.*;
import flash.events.*;
import flash.filters.GradientGlowFilter;
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.events.*;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import caurina.transitions.Tweener;
public class ThreeDee extends MovieClip
{
private var effectWidth:Number = 300; // because viewport has clipping turned off
private var effectHeight:Number = 300;
private var glowFilter:GradientGlowFilter = new GradientGlowFilter (0, 45, [0xf0f0f0, 0xf0f0f0, 0xf0f0f0], [0, 0.5, 1], [0x00, 0x50, 0xff], 6, 6, 10, 1, "outer", false);
private var viewport:Viewport3D;
private var scene3d:Scene3D;
private var renderer:BasicRenderEngine;
private var display:DisplayObject3D;
private var object:Cube;
private var camera:FreeCamera3D;
private var pointLight:PointLight3D;
private var materials:MaterialsList;
private var flatShaderMat:FlatShadeMaterial;
private var rotXValue:Number;
private var rotZValue:Number;
private var rotYValue:Number;
private var limit:Number = 1.5;
public function ThreeDee ()
{
stage.showDefaultContextMenu = false;
stage.quality = StageQuality.MEDIUM;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
this.filters = [glowFilter];
// material
flatShaderMat = new FlatShadeMaterial (pointLight, 0xde0000, 0x800000);
flatShaderMat.doubleSided = false;
materials = new MaterialsList ();
materials.addMaterial (flatShaderMat, "all");
// scene
scene3d = new Scene3D();
renderer = new BasicRenderEngine();
camera = new FreeCamera3D(1, 600);
viewport = new Viewport3D(effectWidth, effectHeight, false, false, false, false);
display = new DisplayObject3D();
object = new Cube (materials, 300, 300, 300, 1, 1, 1);
// light
pointLight = new PointLight3D (true, false); // 2nd would be true for collada
pointLight.x = 200;
pointLight.y = 0;
pointLight.z = 500;
display.addChild (object);
scene3d.addChild (display, "Display");
scene3d.addChild (pointLight);
addChild (viewport);
rotXValue = randomize (0, 360);
rotYValue = randomize (0, 360);
rotZValue = randomize (0, 360);
camera.rotationX = rotXValue;
camera.rotationY = rotYValue;
camera.rotationZ = rotZValue;
updateFrame();
recalcValues();
}
private function updateFrame():void
{
camera.x=camera.y=camera.z=0;
camera.moveBackward(500);
pointLight.copyPosition (camera);
renderer.renderScene (scene3d, camera, viewport);
}
private function recalcValues ():void
{
rotXValue = randomize (0, 360);
rotYValue = randomize (0, 360);
rotZValue = randomize (0, 360);
Tweener.addTween (camera, {rotationX:rotXValue, rotationY:rotYValue, rotationZ: rotZValue, onUpdate:updateFrame, onComplete:recalcValues, transition:"easeInOutElastic", time:3});
}
private function randomize(min:Number, max:Number):Number
{
return (Math.random()*(max - min) + min);
}
}
}
Shaded Papervision cube with Tweener + source
April 28th, 2008 | Flash Fun
If you have been visiting this current incarnation of this site since opening day, you may remember that this little Flash-thing used to be part of the original version of the header.
It gave me numerous headaches primarily due to this problem, so I decided to remove it and publish the source instead.
It's really pretty basic - a cube primitive, a FlatShadeMaterial, a GradientGlowFilter, with some random elastic rotation done with Tweener - but I suspect that it could come very handy especially for those who are just starting with Papervision3D. Have fun with it.
Here's the source (of course you will need the Papervision3D Great White branch and Tweener to run it):
// Shaded Papervision Cube with Tweener (C) edvardtoth.com
package {
import flash.display.*;
import flash.events.*;
import flash.filters.GradientGlowFilter;
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.events.*;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import caurina.transitions.Tweener;
public class ThreeDee extends MovieClip
{
private var effectWidth:Number = 300; // because viewport has clipping turned off
private var effectHeight:Number = 300;
private var glowFilter:GradientGlowFilter = new GradientGlowFilter (0, 45, [0xf0f0f0, 0xf0f0f0, 0xf0f0f0], [0, 0.5, 1], [0x00, 0x50, 0xff], 6, 6, 10, 1, "outer", false);
private var viewport:Viewport3D;
private var scene3d:Scene3D;
private var renderer:BasicRenderEngine;
private var display:DisplayObject3D;
private var object:Cube;
private var camera:FreeCamera3D;
private var pointLight:PointLight3D;
private var materials:MaterialsList;
private var flatShaderMat:FlatShadeMaterial;
private var rotXValue:Number;
private var rotZValue:Number;
private var rotYValue:Number;
private var limit:Number = 1.5;
public function ThreeDee ()
{
stage.showDefaultContextMenu = false;
stage.quality = StageQuality.MEDIUM;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
this.filters = [glowFilter];
// material
flatShaderMat = new FlatShadeMaterial (pointLight, 0xde0000, 0x800000);
flatShaderMat.doubleSided = false;
materials = new MaterialsList ();
materials.addMaterial (flatShaderMat, "all");
// scene
scene3d = new Scene3D();
renderer = new BasicRenderEngine();
camera = new FreeCamera3D(1, 600);
viewport = new Viewport3D(effectWidth, effectHeight, false, false, false, false);
display = new DisplayObject3D();
object = new Cube (materials, 300, 300, 300, 1, 1, 1);
// light
pointLight = new PointLight3D (true, false); // 2nd would be true for collada
pointLight.x = 200;
pointLight.y = 0;
pointLight.z = 500;
display.addChild (object);
scene3d.addChild (display, "Display");
scene3d.addChild (pointLight);
addChild (viewport);
rotXValue = randomize (0, 360);
rotYValue = randomize (0, 360);
rotZValue = randomize (0, 360);
camera.rotationX = rotXValue;
camera.rotationY = rotYValue;
camera.rotationZ = rotZValue;
updateFrame();
recalcValues();
}
private function updateFrame():void
{
camera.x=camera.y=camera.z=0;
camera.moveBackward(500);
pointLight.copyPosition (camera);
renderer.renderScene (scene3d, camera, viewport);
}
private function recalcValues ():void
{
rotXValue = randomize (0, 360);
rotYValue = randomize (0, 360);
rotZValue = randomize (0, 360);
Tweener.addTween (camera, {rotationX:rotXValue, rotationY:rotYValue, rotationZ: rotZValue, onUpdate:updateFrame, onComplete:recalcValues, transition:"easeInOutElastic", time:3});
}
private function randomize(min:Number, max:Number):Number
{
return (Math.random()*(max - min) + min);
}
}
}
- 立方体的着色,阴影效果,过度效果
- CSS的阴影效果。
- 控件的阴影效果
- css的阴影效果
- 阴影效果
- 阴影效果
- Android 关于立方体旋转效果的研究
- 简单的CSS阴影效果
- 高难的窗体阴影效果
- 自定义 UIView的阴影效果
- 图片阴影效果的实现
- 实现textview的阴影效果
- 图片阴影效果的实现
- 图片阴影效果的实现
- wpf border的阴影效果
- Android文字的阴影效果
- 图片阴影效果的实现
- android中图型的阴影效果
- SQL Server 2000 的工具
- SQL Server 2000 的版本和系统需求
- SQL Server 2000 的新特性
- WinCE5.0/6.0下,通过command line实现自动化编译
- SQL Server 2000 简介
- 立方体的着色,阴影效果,过度效果
- 五种提高 SQL 性能的方法
- 如何创建SQL Server 2000故障转移群集
- SQL Server2005SQLCLR代码安全之权限
- 期中考试快到了,但是自己好像还没有有效的利用时间......我要加油才行
- rm命令(删除文件)
- 无向图的最小支撑树Kruskal算法的实现
- 深入探讨SQL Server 2000对XML的支持
- mv命令(移动)