用于three.js的GUI系统

时间:2013-04-01 15:22:59

标签: jquery-ui three.js

将形式,按钮,复选框等GUI控件“附加”到three.js场景中的对象有什么好方法?

即,我想展示一个3D模型,让用户点击并选择该模型中的内容,然后看一个弹出式菜单,引导他找到可以设置其属性,执行其他操作等的表单。

(如果我使用JMonkeyEngine,那么粗略的等价可能是Nifty GUI。)

2 个答案:

答案 0 :(得分:5)

我使用带有Three.js raycaster的jQuery UI组件。

在我的HTML中:

<div id="main-canvas">
    <div id="interface">
        markup for your various modals, etc...
    </div>
</div>

我使用Doob先生here的光线投射示例来处理我画布上的点击。如果光线击中一个对象,我会触发jQuery UI组件的代码片段。例如,当用户单击行星球体对象时,触发打开模态。在模态中,您可以在WebGL画布中触发事件。

由于我的应用程序占用了整个窗口,我不得不做一些CSS来确保嵌套的接口div不会导致任何滚动条。

body {
    background-color: black;
    margin: 0px;
}

div#interface {
    position:absolute;
    width: 100%;
}

这对我来说非常好。

答案 1 :(得分:2)

dat.GUI是Three.js用户中一个受欢迎的库,用于这样的事情:http://code.google.com/p/dat-gui/它甚至包含在Three.js发行版中,在/ examples / js / libs /

以下是使用它的一个示例:http://jabtunes.com/labs/3d/dof/webgl_postprocessing_dof2.html

我发现的唯一问题是,如果您对内置控件不满意,很难创建自定义控件/小部件。它仍然相当不错。

使用鼠标选择/激活对象时,有大量信息,只需谷歌“three.js pick”等。