你自己的3D建模软件(基础02)——初试核心类Scene

Scene是ProScene最关键的类,它提供了摄像机交互。

我们只需要在setup()中实例化一个Scene对象,那么整个3D场景就可以为鼠标键盘控制。

 1 import remixlab.proscene.*;
 2 
 3 Scene scene;
 4 
 5 void setup() {
 6   size(640, 360, P3D);
 7   scene=new Scene(this);
 8 }
 9 
10 void draw() {
11   background(127);
12 }

点击运行,按住鼠标左键旋转场景,中键缩放,右键平移。

这时,如果我们加入一些以前学过的3D图形命令在draw()里面,比如box()或者其他什么,那么我们就可以利用鼠标浏览了。

想加入一些界面?这就遇到问题了,界面都是2D的,而P3D模式下,(x,y)这样的坐标实际是在(x,y,0)这个屏幕上,也就是上图白色网格那个位置。可问题是,我们只想要界面和平常看到的一样画在固定的二维位置,而不是随着摄像机的改变而改变。这种情况的界面一般被叫做HUD,这是个很响亮的名字,想想战斗机头戴显示器也是HUD。

Scene也提供了实现这个的命令:beginScreenDrawing()和endScreenDrawing()。顾名思义,我们要把那些控件绘制在这两个函数中间,就像push和pop的组合一个道理。

譬如,我们加入一个ControlP5的按钮控件(相关使用方法请看准备篇)。

import controlP5.*;
import remixlab.proscene.*;

Scene scene;
ControlP5 cp5;

void setup() {
  size(640, 360, P3D);
  scene=new Scene(this);
  cp5=new ControlP5(this);
  cp5.setAutoDraw(false);//禁止自动绘制cp5
  cp5.addButton("change");
}

void draw() {
  background(0);
  box(20);
  scene.beginScreenDrawing();
  cp5.draw();//手动绘制cp5
  scene.endScreenDrawing();
}

这样,我们就在窗口左侧绘制了一个ControlP5按钮。而其位置是相对于窗口本身而言的,并且不受Scene的影响。

利用这个特点,我们做一个比较简单的例子。

转载于:https://www.cnblogs.com/monstage/p/3617927.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值