- 浏览: 1087286 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://uh.9ria.com/space-12147-do-blog-id-5759.html
全景图原理其实很简单,就是将做好的球面贴图贴在一个圆的内部,然后将摄像机放在圆的中间观看,由于视差而产生的现象。因此,只要使用3D引擎的话,制作一个全景系统是很简单的(创建球体,贴上贴图,然后放置摄像机到原点就可以)
但是仅仅是一个全景显示就去搬pv3D这样一个大家伙过来有些小题大做。FLASH3D其实都是将位图打碎成三角形,然后对每个三角形做矩阵变换,并通过绘制三角形到元件的方式实现的。明白这一点就可以自己做。CS4之后提供了原生的3D转换和批量绘制三角形的drawTriangles方法以及许多关于3D矢量的数学公式,大大简化了这个过程(但drawTriangles的使用方法确实难以掌握)
http://code.google.com/p/ghostcat/source/browse/trunk/ghostcatfp10/src/ghostcat/display/g3d/GBitmapSphere.as
这个类实际上是一个绘制球体的类,传入位图贴图,半径,面数之后,修改其matrix3d属性并执行render方法后,就会绘制出一个3D的球体。我们要制作全景效果,只要将它的culling属性设为显示内部TriangleCulling.NEGATIVE,然后将圆的半径设置得足够大,看起来就像是在球体内部了。
值得一提的是,这样制作的全景系统将只有1.8K。而且因为省掉了排序等等多余的操作,效率会有一定提高。
之后会再说说全景中热点的实现方法。
全景图原理其实很简单,就是将做好的球面贴图贴在一个圆的内部,然后将摄像机放在圆的中间观看,由于视差而产生的现象。因此,只要使用3D引擎的话,制作一个全景系统是很简单的(创建球体,贴上贴图,然后放置摄像机到原点就可以)
但是仅仅是一个全景显示就去搬pv3D这样一个大家伙过来有些小题大做。FLASH3D其实都是将位图打碎成三角形,然后对每个三角形做矩阵变换,并通过绘制三角形到元件的方式实现的。明白这一点就可以自己做。CS4之后提供了原生的3D转换和批量绘制三角形的drawTriangles方法以及许多关于3D矢量的数学公式,大大简化了这个过程(但drawTriangles的使用方法确实难以掌握)
http://code.google.com/p/ghostcat/source/browse/trunk/ghostcatfp10/src/ghostcat/display/g3d/GBitmapSphere.as
这个类实际上是一个绘制球体的类,传入位图贴图,半径,面数之后,修改其matrix3d属性并执行render方法后,就会绘制出一个3D的球体。我们要制作全景效果,只要将它的culling属性设为显示内部TriangleCulling.NEGATIVE,然后将圆的半径设置得足够大,看起来就像是在球体内部了。
值得一提的是,这样制作的全景系统将只有1.8K。而且因为省掉了排序等等多余的操作,效率会有一定提高。
之后会再说说全景中热点的实现方法。
package ghostcat.display.g3d { import flash.display.BitmapData; import flash.display.Sprite; import flash.display.TriangleCulling; import flash.geom.Matrix3D; import flash.geom.Point; import flash.geom.Vector3D; /** * 位图贴图球体 * * @author flashyiyi * */ public class GBitmapSphere extends Sprite { /** * 贴图 */ public var material:BitmapData; private var vertsVec:Vector.<Vector.<Vector3D>>; /** * 转换矩阵 */ public var matrix3D:Matrix3D; /** * 半径 */ public var radius:Number; /** * 显示内部/外部 */ public var culling:String; /** * 贴图平滑 */ public var smooth:Boolean; private var nMesh:Number; private var vertices:Vector.<Number>; private var indices:Vector.<int>; private var uvtData:Vector.<Number>; public function GBitmapSphere(material:BitmapData,radius:Number = 100, nMesh:int = 30) { this.material = material; this.radius = radius; this.nMesh = nMesh; this.matrix3D = new Matrix3D(); this.culling = TriangleCulling.POSITIVE; setVertsVec(); render(); } /** * 创建多边形 * */ protected function setVertsVec():void { var i:int; var j:int; var istep:Number; var jstep:Number; istep=2*Math.PI/nMesh; jstep=Math.PI/nMesh; this.vertsVec=new Vector.<Vector.<Vector3D>>(); for(i=0;i<=nMesh;i++) { var vector:Vector.<Vector3D> = new Vector.<Vector3D>(); for(j=0;j<=nMesh;j++) { vector[j]=new Vector3D(radius*Math.sin(istep*i)*Math.sin(jstep*j),-radius*Math.cos(jstep*j),-radius*Math.cos(istep*i)*Math.sin(jstep*j)); } vertsVec[i] = vector; } indices = new Vector.<int>(); uvtData = new Vector.<Number>(); var curVertsNum:int=0; for(i=0;i<nMesh;i++) { for(j=0;j<nMesh;j++) { indices.push(curVertsNum,curVertsNum+1,curVertsNum+3,curVertsNum+1,curVertsNum+2,curVertsNum+3); uvtData.push(i/nMesh,j/nMesh,(i+1)/nMesh,j/nMesh,(i+1)/nMesh,(j+1)/nMesh,i/nMesh,(j+1)/nMesh); curVertsNum += 4; } } } /** * 旋转矩阵并渲染 * @param rotx * @param roty * @param rotz * */ public function rotate(rotx:Number,roty:Number,rotz:Number):void { matrix3D.appendRotation(rotx,Vector3D.X_AXIS); matrix3D.appendRotation(roty,Vector3D.Y_AXIS); matrix3D.appendRotation(rotz,Vector3D.Z_AXIS); } /** * 重置旋转 * */ public function reset():void { matrix3D = new Matrix3D(); } /** * 根据矩阵渲染图像 * */ public function render():void { vertices = new Vector.<Number>(); for(var i:int = 0;i<nMesh;i++) { for(var j:int = 0;j<nMesh;j++) { var curv0:Vector3D = matrix3D.deltaTransformVector(vertsVec[i][j]); var curv1:Vector3D = matrix3D.deltaTransformVector(vertsVec[i+1][j]); var curv2:Vector3D = matrix3D.deltaTransformVector(vertsVec[i+1][j+1]); var curv3:Vector3D = matrix3D.deltaTransformVector(vertsVec[i][j+1]); vertices.push(curv0.x,curv0.y,curv1.x,curv1.y,curv2.x,curv2.y,curv3.x,curv3.y); } } graphics.clear(); if (material) graphics.beginBitmapFill(material,null,false,smooth); graphics.drawTriangles(vertices,indices,uvtData,culling); graphics.endFill(); } } }
发表评论
-
AWAY3D 贴图DEMO
2011-05-14 23:16 0AWAY3D 贴图DEMO -
[转] AS3 制作3D位图方法
2011-05-04 00:34 1498http://bbs.9ria.com/viewthread. ... -
[转] MoleHill操作AGAL的Helper类之一
2011-04-29 01:46 1101本帖最后由 sleep2death 于 2011-4-20 1 ... -
和场景里的物体交互要用InteractiveScene3D,examples里有个InteractiveBoxDemo的例子有很好的参考价值
2011-04-28 21:53 0和场景里的物体交互要用InteractiveScene3D,e ... -
[转] 使用Flare3D制作一款 a small game 的3d游戏!
2011-04-25 01:39 2095http://bbs.9ria.com/viewthread. ... -
[转] [Flash/Flex] 支持 Molehill版本的Flare3D 应用示范
2011-04-16 02:30 1262http://bbs.9ria.com/thread-7953 ... -
[转]自制flash3D变换类
2011-04-15 16:09 1020http://hi.baidu.com/boycy/blog/ ... -
[转] [Flash/Flex] native3d flash 3d引擎发布molehill版
2011-04-13 22:46 1107http://bbs.9ria.com/viewth ... -
[转] [Flash/Flex] 轻量级flash3d引擎native3d rev19使用教程
2011-04-10 06:00 1114资讯类型: 原创 来 ... -
[转] 缠绕规则在drawpath中的应用
2011-04-10 05:40 1416使用as3的绘图API绘制填充区域时,经常会涉及到相交区域的颜 ... -
[转]2011RIA天地行主题之3D Flash3D引擎简介
2011-03-31 22:34 1827http://bbs.9ria.com/viewthread. ... -
[转]Flash Player 10' s new 3D effects(三)
2011-03-23 17:34 1609http://sjkgxf7191.iteye.com/blo ... -
[转]Flash Player 10' s new 3D effects(二)
2011-03-23 15:50 1546http://sjkgxf7191.iteye.com/blo ... -
[转]Flash Player 10' s new 3D effects(一)
2011-03-23 14:55 1369http://sjkgxf7191.iteye.com/ ... -
[转]使用Flare3D在FB中搭建第一个Molehill项目
2011-03-22 20:52 1970http://www.adobe.com/cn/devnet/ ... -
[转]M2D的介绍——针对Flash ‘Molehill’ API的GPU加速2D框架
2011-03-22 14:37 1778http://bbs.9ria.com/viewth ... -
[转]使用Away3D引擎的Flash3D推箱子游戏原型 - 最终版本
2011-03-18 22:06 1389http://bbs.9ria.com/viewthread. ... -
3D塔防
2011-03-18 18:29 03D塔防3D塔防 -
[转]Flash ‘Molehill’ API上的GPU加速2D框架-M2D
2011-03-11 02:13 0http://bbs.9ria.com/thread-75 ... -
jiglibflash--Flash 3D physics engine
2011-03-09 13:06 1585http://code.google.com/p/jiglib ...
相关推荐
4. **自动校正**:新增了更精确的自动校正功能,如“光照效果”和“镜头校正”,可以快速修复照片的曝光、对比度和失真问题。 5. **画布旋转**:用户可以自由旋转画布,适应各种角度的编辑需求,特别是处理全景图片...
Adobe Photoshop CS4 Extended 是一款强大的图像处理软件,它在原有的Photoshop CS4基础上增加了许多创新功能,尤其在3D图像处理、动态内容编辑以及高级图像分析方面。以下是一些主要的新特性: 1. **3D上色和构图...
- **拼合全景图像**:支持多张照片拼合成一张全景图,适用于风景摄影等场景。 - **景深混合**:通过混合不同焦距的照片来创建深度效果。 - **智能对象**:支持非破坏性编辑,可以在保留原始图像的同时进行调整。 - *...
- **自动对齐图层**:对于拼接照片或创建全景图非常有用,可以自动调整和对齐多个图像。 - **黑白转换**:新增了黑白转换功能,可以精确控制图像的灰度效果。 - **改进的曲线调整**:提供更精细的色彩和亮度调整选项...
2. **全景合并功能**:允许用户将多张照片合并成一张高质量的全景图,非常适合风景拍摄。 3. **高动态范围(HDR)成像**:通过合并不同曝光级别的照片来创建具有更宽广亮度范围的图像。 4. **智能对象**:这是一种特殊...
- **图层管理**:Photoshop CS3支持多图层编辑,允许用户在不破坏原始图像的情况下进行各种操作,如调整、添加效果或隐藏/显示特定部分。 - **滤镜和效果**:内含丰富的滤镜库,可以为图像添加各种艺术效果,如...
3. **自动混合图层:** 该功能可以将多个图像自动合并成一个无缝的全景图,非常适合制作宽广视角的照片。 4. **改进的用户界面:** Photoshop CS3对用户界面进行了优化,提供了更直观的操作流程,便于用户快速找到所...
- **使用Photomerge创建全景图像**:指导用户如何将多张照片拼接成一张宽广的全景图。 #### 第8章:选区和蒙版 - **选择和遮罩技术**:本章重点在于如何精确地选择目标区域以及如何使用蒙版隐藏不需要的部分。 - *...
- **快速选择工具**:提升选择精度,特别是在处理复杂边界如发丝和羽毛时,新增优化边缘功能,可微调选区并实时预览。 4. **其他重要概念** - **矢量图形与位图图像的区别**:矢量图基于数学公式,无限放大不失真...
实现对变电站重要设备的环境量、物理量、状态量、电气量、行为量进行实时采集,并全面融合运检专业多源系统数据,实现设备本体及运行环境的深度感知、风险预警和全景展示;实现对视频监控、动环监测、安全防范、门禁...
(2) 智慧校园全景图,则以可视化方式描绘了校园各系统间的相互关系,以及与外部环境的交互。 第二章深入探讨了云数据中心的详细设计。总体架构设计包括逻辑架构和物理架构两部分。逻辑架构关注服务层面的划分,如...
2. 实现对变电站重要设备的环境量、物理量、状态量、电气量、行为量进行实时采集,并全面融合运检专业多源系统数据,实现设备本体及运行环境的深度感知、风险预警和全景展示,主动触发多参量和多设备间的联合分析并...