快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 站在5米外看10米高的楼,和100米外看10米的楼能一样高吗? 三维世界和二维世界的尺寸本来就不一样,不要钻牛角尖啦 ~










最近更新:
● ScottJep阁下在讨论区里 发表新主题“En France Sildenafil...”(13:57:30)
● ScottJep阁下在讨论区里 发表新主题“Sans Ordonnance Pril...”(13:25:06)
● Antuanettiz阁下在讨论区里 发表新主题“sex dating adult sit...”(13:01:14)
浏览主题:《超简易papervision3D基础 第十篇 实时在物体上画画》

《超简易papervision3D基础 第十篇 实时在物体上画画》
DDM君 (2012-03-16 05:50:40)

DDM君 , Flab3D.com (允许转载,转载请注明)

这是一个非常有趣的交互功能,网站,游戏里都时常会出现。用这个原理,我们能做出非常有趣的用户贴图绘制的功能,增加交互和自制的乐趣。







基本原理:
最基本的是要获取下笔的鼠标位置,这个pv3d给我们准备了virtualMouse可以获取一个大致的三维空间的二维鼠标位置(一些情况下用virtualMouse解决不了),它可以用来和各种三位空间的物体上的按钮位置等等交互。
获取了下笔位置,就可以用graphics.beginFill等的flash自带位图做图方法来不停的绘制一个个圆。
当然如果要做复杂的绘制功能,还需要考虑到模型本身的UV,和画笔的形状和笔触,但这些都交给各位自己去尝试,我们毕竟是超简易嘛~
有什么新的发现都欢迎给我们分享,复杂制作中有问题欢迎去讨论区



这次我们要制作一个转动的平面,我们可以在上面绘制简单的贴图。
注意:在这里为了代码的简单易懂,在下没有做任何优化,所以笔触多会很耗资源。另外,因为没有限制范围,所以贴图可以越画越大,在图像上显示的则是开始的灰色区域被压缩(因为物体并不会变大,超出范围当然是压缩贴图咯)

点击在这里下载源代码(无法右键另存,直接点击即可)
代码分析:
首先声明一个virtualMouse,他会自动获取三维空间的二维坐标
var vMouse: virtualMouse= viewport.interactiveSceneManager.virtualMouse;

建立一个实体的MovieClip,以便之后调用
private var mc1:MovieClip=new MovieClip();

其他的贴图就不再解释了,不清楚的请参考《超简易papervision3D基础 第九篇 鼠标手型和更换贴图》或到讨论区找相关帖子看看。

侦听plane1的事件,按下和移动。
plane1.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onDown);
plane1.addEventListener(InteractiveScene3DEvent.OBJECT_MOVE, onMove);

这是一句可以非常方便的判断是否鼠标已经按下,否则还得自己加boolean变量,然后加放开的侦听。
if (InteractiveSceneManager.MOUSE_IS_DOWN) {

这几句就是在virtual鼠标的位置开始在贴图mm的movieClip,mc1上画‘灰色,半径为10的圆’的句子,都是as3的基础,这里就不多讲了,看看flash帮助就知道了。
mc1.graphics.beginFill(0xBBBBBB,1);
mc1.graphics.drawCircle(vMouse.x, vMouse.y, 10);
mc1.graphics.endFill();

最后不要忘记倒入相关的新类哦~(其他的以前类讲过^_^)
import org.papervision3d.core.utils.InteractiveSceneManager;
import org.papervision3d.core.utils.virtualmouse.VirtualMouse;




希望大家能从这个简单的例子里悟出‘获取三维鼠标位置’,和‘实时绘制贴图’的奥义。能实战在更复杂的地方。有什么心得都欢迎给我们分享,有问题欢迎去讨论区
好好加油!


Flash3d研究所推荐的最新pv3d傻瓜包
源文件下载(无法右键另存,直接点击即可)



DDM君
Flab3D.com







flash 3d 研究所
(2008-12-20 15:18:52)
随着绘制内容越来越多,demo对cpu有严重消耗


flash 3d 研究所
(2008-12-21 11:33:17)
的确是 这里做了解释^_^
注意:在这里为了代码的简单易懂,在下没有做任何优化,所以笔触多会很耗资源。另外,因为没有限制范围,所以贴图可以越画越大,在图像上显示的则是开始的灰色区域被压缩(因为物体并不会变大,超出范围当然是压缩贴图咯)



flash 3d 研究所
(2008-12-22 18:05:29)
看了網站上的資料受用很多^^
教學文件中的"collada文件代码分析",目前沒辦法點選是預定會寫的教學嗎?


flash 3d 研究所
(2008-12-22 19:53:42)
欢迎你bruce 是的 我们一般把写了一些但是没完成的都先写出来,好让大家知道之后会有些什么主题。


flash 3d 研究所
(2008-12-23 13:24:04)
谢谢您,不知关于DAE模型关节控制的讲座何时开讲呢?


flash 3d 研究所
(2008-12-23 22:59:54)
感谢kyoichi君的光临~
DAE由于本身还不成熟,所以不会在超简易里面讲解。中级教程里面之后会介绍一些的。


flash 3d 研究所
(2009-04-10 09:49:46)
请问一下DDM君我把平面改成球体,在球体上绘画是球体的材质会裂开,这是怎么回事呀!另外我想问一下,怎么限制绘制的范围呀


flash 3d 研究所
(2009-06-03 21:39:16)
下载下来的rar包里面没有swf文件,自己重新生成swf好像又缺少了一个类,出错提示是:1172: 找不到定义 flab3d。好像就是:import flab3d.*; 这句不行,请问怎么解决?


flash 3d 研究所
(2009-06-13 10:41:25)
您一定不是下载的我们的最新傻瓜包 对吧,请务必使用我们研究所的最新傻瓜包,才能最好的配合我们的教程^_^


flash 3d 研究所
(2009-08-21 11:26:21)
在系统提供的3D模型中都可以绘制
为什么我自己制作的模型,却侦听不到鼠标按下放开事件呢?


flash 3d 研究所
(2009-11-06 11:43:58)
为什么下载的源代码运行的效果和上面的不一样


flash 3d 研究所
(2009-11-30 17:59:49)
上面的也看不见


flash 3d 研究所
(2009-12-03 11:37:48)
上面的现在可以看见了


flash 3d 研究所
(2009-12-03 12:20:03)
为什么下载的源代码运行的效果和上面的不一样 ×2



flash 3d 研究所
(2010-01-19 11:38:04)
下来之后运行出错!!
1046: 找不到类型,或者它不是编译时常数: InteractiveScene3DEvent。


flash 3d 研究所
(2010-02-06 20:01:27)
为什么总是和上面的效果不一样。。有点郁闷


flash 3d 研究所
(2010-04-30 21:32:02)
这也拿出来说,真是没什么可说的了


flash 3d 研究所
(2010-04-30 21:33:48)
如有pv3d项目拿出来做做,不要拿这种很简单不实用的东西,招摇撞骗


flash 3d 研究所
(2011-08-02 13:25:20)
非常不错的资料啊


flash 3d 研究所
(2011-08-22 12:12:02)
Pin my tail and call me a dokeny, that really helped.


flash 3d 研究所
(2011-09-18 09:57:29)
buy accutane %(( propecia 01649


flash 3d 研究所
(2012-01-16 03:22:54)
very helpful tutorial, thanks and gifts to you!
Geschenke


flash 3d 研究所
(2012-03-14 08:12:36)
你好 我使用的是CS5.5,下载完傻瓜包和源文件以后 测试的影片 窗口不变,内容变大,看不到了,这是怎么回事?


flash 3d 研究所
(2012-03-14 08:12:36)
鼠标与 绘画点坐标不一致


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了