ActionScript 3.0 学习(十七) away3D学习2 away3d的贴图原理
我正在做这样一个东西,在球体的表面,贴上多张图片,如四张图片,其实很简单,如果你明白它的贴图原理。
away3d空间中的最小单位是Face(surface的简称),也就是一个三角形Triangle(但是Face和Triangle分别是两个不同的类),每一个模型(sphere,cube等)都是由很多
个Face组成的。Face中最重要的内容是:
(1)三个x,y,z坐标的点a(x1,y1,z1),b(x2,y2,z2),c(x3,y3,z3),这三个点决定了三角形在三维空间中的位置;
(2)三个U,V坐标的点(u1,v1),(u2,v2),(u3,v3),这三个坐标是二维平面上的坐标,范围是0~1,决定了三角形的贴图信息。如果要给三角形贴上一个长为w,宽为h的图
片,那么,空间中的点(x1,y1,z1)就对应着图片上(u1*w,v1*h)这个点,同理其他两个点也是如此,所以贴图时,只是把图片上(u1*w,v1*h),(u2*w,v2*h),
(u3*w,v3*h) 这三个点围起来的三角形的颜色值完全拷贝出来绘制到三维空间的那个目标三角形上。
package
{ import away3d.cameras.Camera3D; import away3d.containers.ObjectContainer3D; import away3d.containers.Scene3D; import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.materials.TextureMaterial; import away3d.primitives.PlaneGeometry; import away3d.primitives.SphereGeometry; import away3d.textures.BitmapTexture; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.Stage3D; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Vector3D; [SWF(width="1024", height="768", frameRate="30", backgroundColor="#00AAAA")] public class Triaxe extends Sprite { private var view: View3D; private var camera: Camera3D; private var scene: Scene3D; private var group: ObjectContainer3D; //嵌入外部图片资料 [Embed( "assets/earth.jpg" )] private var EarthImage: Class; [Embed( "assets/checker.jpg" )] private var CheckerImage:Class; [Embed( "assets/away3d.jpg" )] private var Away3DImage: Class; public function Triaxe() { //TODO: implement function super(); this.init(); } private function init(): void { trace( "init" ); this.init3D(); this.createScene(); this.addEventListener(Event.ENTER_FRAME, onEnterFrame); this.addEventListener(Event.RESIZE, onResize ); } private function init3D(): void { trace( "createScene" ); camera = new Camera3D(); scene = new Scene3D(); view = new View3D( scene, camera ); view.antiAlias = 4; addChild( view ); } private function createScene(): void { group = new ObjectContainer3D(); scene.addChild( group ); //创建一个地球模型 this.createEarth(); this.createAway3dNote(); } private function createEarth(): void { var earthBitmap: BitmapTexture = new BitmapTexture( new EarthImage().bitmapData ); var texture:TextureMaterial = new TextureMaterial( earthBitmap ); var sphGeo: SphereGeometry = new SphereGeometry(); var sphere: Mesh = new Mesh( sphGeo, texture ); sphere.position = new Vector3D( 200, 0, 0 ); //设置名字为 earth, 以后可以通过这个名字来访问地球 sphere.name = "earth"; trace( "sphere'name: " + sphere.name + "Position: " + sphere.position ); group.addChild( sphere ); } private function createAway3dNote(): void { var away3dBitmap: BitmapTexture = new BitmapTexture( new Away3DImage().bitmapData ); var texture: TextureMaterial = new TextureMaterial( away3dBitmap ); var planeGeo: PlaneGeometry= new PlaneGeometry(200, 200, 10, 10, true ); var away3dNote: Mesh = new Mesh( planeGeo, texture ); away3dNote.pitch( -90 ); away3dNote.name = "away3dnote"; trace( "plane'name: " + away3dNote.name ); group.addChild( away3dNote ); } private function onEnterFrame( evt: Event ):void { group.roll( 2 );
// group.pitch( 1 );
// group.yaw( 1 ); view.render(); } private function onResize( evt: Event ): void { } }
}
ActionScript 3.0 学习(十七) away3D学习2 away3d的贴图原理相关推荐
- 智能车学习(十七)——舵机学习
一.舵机的结构 舵机简单的说就是集成了直流电机.电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元.能够利用简单的输入信号比较精确的转动给定角度的电机系统.舵机安装了一个电位器(或其它角度传 ...
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...
- 《Adobe Flash CS4 ActionScript 3.0中文版经典教程》——ActionScript 3.0简介
本节书摘来自异步社区<Adobe Flash CS4 ActionScript 3.0中文版经典教程>一书中的ActionScript 3.0简介,作者: [美]Adobe公司 更多章节内 ...
- OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)
OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...
- PyTorch框架学习十七——Batch Normalization
PyTorch框架学习十七--Batch Normalization 一.BN的概念 二.Internal Covariate Shift(ICS) 三.BN的一个应用案例 四.PyTorch中BN的 ...
- 达拉草201771010105《面向对象程序设计(java)》第十七周学习总结
达拉草201771010105<面向对象程序设计(java)>第十七周学习总结 第一部分:理论知识 1.多线程的概念: (1)多线程是进程执行过程中产生的多条执行线索. (2)多线程意味着 ...
- 张云飞 201771010143 《面对对象程序设计(java)》第十七周学习总结
张云飞 201771010143 <面对对象程序设计(java)>第十七周学习总结 1.实验目的与要求 (1) 掌握线程同步的概念及实现技术: (2) 线程综合编程练习 2.实验内容和步骤 ...
- 第十七周学习周报(20180625-2018060701)
第十七周学习周报 一.本周学习情况 1.李宏毅老师的机器学习课程学完 2.完成了机器学习课程后面的部分作业 3.学习了LeNet-5模型 4.看了caffe识别手写数字的源码 二.学习笔记 ...
最新文章
- 华为笔记本matebook13_为什么我不推荐华为Matebook 13给职场新人/小白?
- 此blog已经迁移~~~
- 【数字信号处理】相关函数 ( 有限信号 | 有限信号的自相关函数 )
- git服务器(gitea)安装说明
- Python -bs4反爬虫解决方法
- php ajax 更改状态,phpajax实现无刷新获取天气状态_PHP教程
- 怎样用c语言输出一个函数图像,请教 怎么才能用C输出一个函数的图像?大侠 帮帮忙啊...
- 2021-09-06LS是交替最小二乘(alternating least squares)的简称,用交替最小二乘求解的一个协同推荐算法。
- Java 并发编程常识 —— by 梁飞
- Qt基础-QTreeView简单demo、视图模型、坐标位置对应关系介绍等
- Visio2016激活工具
- 通过二进制头识别文件类型
- 解决MAC上网速度慢的原因
- 论文阅读-Whisper语音识别(OpenAI)
- hdu4311 Meeting point-1 求最小的曼哈顿距离和
- vue、dom、监听扫码枪 输入框与全屏获取扫码输入的结果 及 非扫码输入的结果 单输入框 多状态接口查询
- 计算机视觉--CV技术指南文章汇总
- 亚利桑那州立大学计算机专业,美国大学亚利桑那州立大学计算机科学专业课程设置...
- 本人在上海,做java3年了,最近在找工作,一言难尽
- C++ 二维vector排序(sort用法)
热门文章
- 【锐捷无线】无线网络优化
- Mybatis-plus:${ew.sqlselect}用法
- samba,nfs,iscsi网络文件系统
- 计算机科学与技术要学政治,北京交通大学计算机科学与技术考研经验分享
- 二分图最佳完美匹配——KM算法总结
- 贝叶斯方法的思想基础
- TCP和UDP的135、137、138、139、445端口的作用
- 2023年中国科学技术大学计算机考研上岸前辈备考经验
- Jenkins升级最新LTS版本2.150.x,页面本地化之后出现部分英文部分中文的解决办法
- python 智能造句,用生成器从给定单词造句