极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 28977|回复: 6

Processing之旅-----【16课,3D的世界,真与假的感觉】

[复制链接]
发表于 2013-6-3 19:32:02 | 显示全部楼层 |阅读模式
首先我们开始上课!


今天我们主讲Processing的3d绘画基础。首先让我们根据官网的3D教程先了解一下什么是3D坐标系。
P3D
本教程是为处理版本2.0 +。如果你看到任何错误,或者有任何意见,请让我们知道
P3D是什么呢?
在处理2.0,有四种渲染模式:默认的渲染,P2D,P3D,PDF若要使用非默认的渲染,你可以通过指定的
size()函数。void setup()
{
  size(500,500,P3D);

}
现在,你可能会想:“我应该选择渲染模式,为什么?” 模式本身告诉处理幕后做什么时,显示窗口。例如,默认的渲染器​​采用现有的Java 2D库绘制形状,设置颜色,显示文字等决定使用哪个渲染时,你是平衡的因素:速度,精度和可用功能的一般用处。在大多数情况下,尤其是当你第一次学习处理,你将要使用的默认渲染器设置。在2D绘图时,它提供了最优雅和最准确的结果。
开关到P2D或P3D是可取的,因为以下情况之一:
  • 您正在绘制在3D! 的第三轴线(z轴),是指在三维空间中,任何给定的点的深度。像素住在前面或后面的窗口多远?现在,我们都知道有没有漂浮在空气中的前面或后面你的屏幕的实际像素!我们这里谈论的是如何使用的理论z轴,在处理窗口创建三维空间的错觉。P3D需要这一点。
  • 你希望你的草图跑得更快! P2D和P3D利用兼容OpenGL图形硬件的。换句话说,一些工作需要在窗口中绘制的所有像素都可以发生在您电脑的显卡往往是办事效率高。请记住,OpenGL是没有魔法尘埃,使得任何草图更快(虽然它很接近),你也需要仔细考虑所使用的技术,你做的绘图以及。特别是,使用新的“形状录音”功能,可在PShape(见PShape教程)P3D模式,可以大大提高速度。
  • 您在2D绘图,但要使用一个特定的图形不提供默认的渲染效果! 只适用于某些图形功能P2D如纹理和照明(见下文)。
3D转换
我们开始绘制在3D之前,重要的是要注意,只要我们给自己的三维空间的错觉,一定量的控制,必须放弃P3D渲染。您再也无法知道确切的像素位置,因为你可能会与2D形状,因为2D的位置将被调整,以创建3D透视的错觉。
为了绘制:X,Y,Z三维坐标中指定的顺序,你会期望在一个点的东西。笛卡尔的3D系统经常被描述为“左撇子”或“右撇子”。如果你的食指指向y轴正方向(向上)和你的拇指在x轴正方向(右侧),其余的手指指向正z方向。这是左手,如果你用左手做同样的。在处理中,该系统是左撇子,如下:

一看上面的对比,就很容易明白,原来3d就是多了一个Z轴。
好吧,看起来挺简单的。但是想起来就不那么容易了。
以为这涉及到复杂的图形学知识,想必学美术的同学了解的多一些。关于如何在平面上构造出立体效果我就不想说
理论层面上的了。下面说点关于Processing绘制3D上的有用话。
  1. /*
  2. *好久没更新教程了,今天就讲一讲关于3D绘图的基本教程
  3. *
  4. *因为在Processing中现有的3d函数都是在坐标原点建立的。所以可能在逻辑上与
  5. *传统的2D坐标有不同。这点在坐标系课中已经讲过。不再详述。
  6. *
  7. *
  8. *
  9. *
  10. *
  11. */

  12. void setup()
  13. {
  14.   size(500,500,P3D);

  15. }

  16. void draw()
  17. {
  18.         background(0);
  19.    
  20.     translate(200, 200, 0);//坐标翻译,可以理解成立体平移
  21.     rotateX(mouseX);//旋转X轴
  22.     rotateY(mouseY);//旋转Y轴
  23.     box(100);//绘制一个立体的box
  24. }
复制代码


以上代码效果如图。
移动和旋转都是最基本的。
还有更复杂一些的。
无论在3D还是2D都会涉及遮挡问题。
说到这里就必须说两个函数。
  1. fill(255);
  2. rect(0, 0, 50, 50);  // White rectangle

  3. pushMatrix();
  4. translate(30, 20);
  5. fill(0);  
  6. rect(0, 0, 50, 50);  // Black rectangle
  7. popMatrix();

  8. fill(100);  
  9. rect(15, 10, 50, 50);  // Gray rectangle
复制代码



当然了,说道3D绘制,很多东西都不可避免的要提及,
纹理,灯光,透视,摄像机。
以后会讲解这四点。
那么下课。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-6-3 22:39:52 | 显示全部楼层
这都可以看起来好酷。用matlab可以不??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-5 19:01:45 | 显示全部楼层
谷东昌 发表于 2013-6-3 22:39
这都可以看起来好酷。用matlab可以不??

没太明白您想干什么。
回复 支持 反对

使用道具 举报

发表于 2014-10-31 11:26:22 | 显示全部楼层
P2D,P3D用不了
回复 支持 反对

使用道具 举报

发表于 2014-11-28 07:33:20 | 显示全部楼层
matlab是可以做的,在2013版本之后,MATLAB拥有了虚拟现实工具箱,可以很好地支持基本的光线渲染与处理,不过需要你较好的英语基础了呢~基本没有中文资料, 一般都是国外教育机构研究虚拟现实(VR)交互应用算法使用的。所以,学习起来会略显复杂
回复 支持 反对

使用道具 举报

发表于 2015-4-6 09:07:00 | 显示全部楼层
LINK~ 发表于 2014-10-31 11:26
P2D,P3D用不了


我也用不了,出现这样的错误:
Could not run the sketch (Target VM failed to initialize).
For more information, read revisions.txt and Help → Troubleshooting.
系统为winxp

不知你解决了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 19:55 , Processed in 0.043625 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表