图层、容器和接口

当设计一个Ventuz场景时,某些节点的组合或设计会反复出现。例如在演示中使用的按钮或滑块,在整个过程中的呈现和外观都是一致的,唯一变化的是尺寸、位置和标签。

在设计复杂的演示时,另一个常见的主题是场景的语义结构。可能有一个场景负责呈现用户界面,另一个用于与外部设备对话,另一个用于渲染图像集合。在一个视觉空间中拥有所有这些节点不仅令人困惑,而且完全不必要。

在这种情况下,容器节点可以提高生产效率,因此可以将多个节点组合到容器中,形成一个新的节点类型。把多个节点放到容器中形成单个节点,放置到层次结构中,使场景更容易理解,而不是复制整个子树。

1、创建容器

创建容器的方法和创建其它节点的方法相同。通过拖动鼠标左键,将层次结构或内容容器拖动到场景的各个部分。容器都是一些非常通用的节点,而且场景中都会包含不同的容器,所以最好在节点名称上双击鼠标左键,命名一个合适的名称。

容器类型:

 

Hierarchy Container

可以包含任意数量的层次节点,可以把多个层次节点封装到一个层次节点上

 

Output

提供了将对象链接到层次结构容器的可能性。必须放在层次结构容器中

 

Content Container

可以将任意多个内容节点封装到该节点中

 

Container Info

提供层次结构容器节点的名称和链接索引的信息

2、曝光特性

虽然容器或层的设计主要是为了掩盖实现的复杂性,但通常需要从容器外部调整可封装节点的一些属性。一个按钮可以允许用户改变它的颜色和标签,一个电影播放器,我需要一个文件名才能正常工作。

层或容器中节点的任何属性都可以暴露给外部使用。

若要公开属性,请单击属性编辑器中属性名称的鼠标右键,然后从出现的上下文菜单中选择“公开/编辑”。属性名左边的正方形将变成绿色,表示这是一个已公开的属性。注意,公开的属性名必须是容器中唯一的。如果两个属性具有相同的名称会扰乱Ventuz绑定逻辑。

3、层容器

层是一种特殊的容器,它们只能放在图层中。每个层中都可以放内容或层次节点,并公开它们的属性,就像使用层次容器和内容容器一样。如果要编辑层,只要单击层编辑器上的“铅笔”,就可以编辑层上的内容。

每个层都有一个根节点,它放置在层中,不能被移除。在层次结构编辑器的左上角找到一个3D层的根节点。2D层的根节点在内容编辑器中总是可见。根节点的属性也可以像其他节点一样绑定和公开。默认情况下,它的一些属性被暴露,另一些属性需要手动公开以使其从外部访问。另外,层不能放在容器中,因此不能将它们合并到容器中,但可以放到层组中。

4、密封容器

有时,作者希望向另一个用户分发定制的功能。最终用户应该能够渲染和调整功能,但不能看到它是如何完成的。在这种情况下,功能可以封装到一个容器中,然后密封。有两种类型的密封:

简单密封:这种作用类似于容器上的写保护。用户不能进入容器,它是密封的但任何人都可以拆下密封再次打开容器。

•永久密封:永久清除所有进入容器的可能性。这种类型的密封不能撤消。

密封操作:

5、接口容器

在工作中使用容器时,不可避免要修改容器。无论是需要修复的bug还是添加的附加功能,更改都是在一个实例中完成的,手动更新到所有其他实例中。通常的方法是删除所有其他实例,复制修改后的版本并手动重建所有已存在的绑定。接口是容器概念的扩展,以解决上述问题以及其他问题。它们定义一个容器必须提供的属性,以便在场景的某个部分使用。即使在封装的节点被移除时,容器接口也保持完整的属性(因此它的绑定也保持不变)。当容器的内容被替换时,重新公开接口属性就可以完成其它实例的更新。

定义接口:

新定义的接口必须包含容器需要公开的属性。当选择容器时,在属性编辑器的底部会出现一个“接口”按钮。按下它,容器被升级到一个接口容器。容器接口比非容器接口多了两条线。截图中,第一行为非容器接口,第二行为容器接口。

当将容器更改为接口容器时,所有已公开的属性都将成为接口属性。它们之间的区别是,即使属性不再暴露,接口属性仍然在接口上定义。在此之后公开的所有属性也自动成为接口属性。

移除暴露属性的节点时,接口属性保持不变,但以浅灰色显示。若要删除接口属性定义,请双击鼠标左键单击接口属性,然后按“排除”或使用“属性编辑器”底部的“清除”按钮,删除没有相应的暴露节点的所有接口属性。

与公开节点断开连接的接口属性保留其最后有效值。

替换接口内容:

当拖放接口容器时,场景中的所有接口容器都用深灰色边框突出显示。当拖动到目标接口容器上时,该接口容器边框将变为红色。在该状态下释放鼠标按钮不会删除原始节点,但会替换源节点的目标内容。

接口属性被替换后,Ventuz将按照一定规则重新连接接口属性。规则如下:

1、属性类型必须相同

2、属性名必须一样,同时区分大小写

从仓储中拖动出的接口容器也遵循上述规则。为了提高自动连接的性能,必须所有属性都唯一。

6、图层接口

层也可以被转换成图层接口,不过被转换后只能保留微被公开的属性,这样绑定就不会丢失,但他们的内容不会被其它接口的内容替换。

通过仓储,接口容器可以很容易更改或更新其它实例。因此我们可以把接口容器拖到已经打开的仓储中创建仓储项。项目中的每个实例都会引用它,因此可以很容易地更新。

11.Layers, Containers and Interfaces的更多相关文章

  1. Google C++ Style Guide

    Background C++ is one of the main development languages used by many of Google's open-source project ...

  2. Google C++ 代码规范

    Google C++ Style Guide   Table of Contents Header Files Self-contained Headers The #define Guard For ...

  3. TUXEDO管理命令总结

    tmboot  启动服务: 参数说明: -l  lmid 启动逻辑服务器名为lmcd服务器上的所有进程 -g grpname 启动GROUP名为grpname的所有进程 -i  srvid 启动SRV ...

  4. Whitespace character

    In computer science, whitespace is any character or series of whitespace characters that represent h ...

  5. 用于NLP的CNN架构搬运:from keras0.x to keras2.x

    本文亮点: 将用于自然语言处理的CNN架构,从keras0.3.3搬运到了keras2.x,强行练习了Sequential+Model的混合使用,具体来说,是Model里嵌套了Sequential. ...

  6. RSA 非对称加密【转】

    演示代码:https://pan.baidu.com/s/10rfSUUDEEHvCDEYH0oEVCw Base64工具类,可以让rsa编码的乱码变成一串字符序列 1 package com.uti ...

  7. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

  8. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...

  9. Single VIP LLB and SLB config

    Single VIP LLB and SLB config >>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. java 使用OpenOffice文件实现预览

    1.安装OpenOffice软件 安装教程:https://jingyan.baidu.com/article/c275f6ba12c07ce33d756732.html 2.安装完成后,创建项目,p ...

  2. 【03】AngularJS 简介

    AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML ...

  3. ceph 简介

    Ceph 存储集群 数据的存储 伸缩性和高可用性 CRUSH 简介 集群运行图 高可用监视器 高可用性认证 智能程序支撑超大规模 动态集群管理 关于存储池 PG 映射到 OSD 计算 PG ID 互联 ...

  4. ceph rbd 入门

    1.一个现成的ceph cluster 参考之前写的ceph-deploy 部署ceph cluster 2.配置client与ceph cluster对接 在ceph cluster的管理节点上安装 ...

  5. BNUOJ 1206 A Plug for UNIX

    A Plug for UNIX Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Origina ...

  6. noip模拟赛 蒜头君的树

    分析:这道题问的是树上整体的答案,当然要从整体上去考虑. 一条边对答案的贡献是这条边一端连接的点的个数*另一端连接的点的个数*边权,可以用一次dfs来统计答案,之后每次更改操作在原答案的基础上增减就好 ...

  7. MYSQL中的主要查询方法

    #简单查询 #查询表中的所有数据SELECT * FROM test; #查询表中的指定列的数据SELECT cid,cname FROM test; #过滤重复的数据SELECT DISTINCT ...

  8. ubuntu无法update

    ubuntu系统执行sudo apt-get update报错解决方法: 编辑源列表文件 sudo vi /etc/apt/sources.list 将原来的列表删除,添加如下内容(中科大镜像源) d ...

  9. Java并发:线程安全的单例模式

    转载请注明出处:jiq•钦'stechnical Blog 1.饿汉式 public class Singleton { private final static Singleton INSTANCE ...

  10. javascript 事件对象(event 对象)

    原文: http://www.cnblogs.com/songyaqi/p/5204143.html <html> <head> <title> Track Mou ...