二、文本的显示
介绍如何创建具有文字的场景效果,在创建过程中还将详细介绍如何设置光源以及文字风格等方法。
一、 创建一个新的X3D文件
操作如下:
1. 运行X3D-Edit,出现如图所示的界面。

说明:
X3D-Edit程序界面分为五个区,即:用户命令区、节点区、节点属性区、程序编辑区及消息区。
用户命令区是位于顶层,包括菜单命令和工具条命令。
节点区位于界面的左侧,包括X3D目前所支持的所有特性节点,它是标签操作方式,单击相应的标签将在下方显示出相应的节点,凡是不可添加的节点均以灰色显示。
节点区的下方是节点属性区,属性区所在的窗口中包括当前节点的大部分属性,在这里我们可以更改或设置相应的属性值。
界面的最下方是消息区,用来显示当前操作或编译情况。
程序编辑区用来显示和编辑我们所设计的X3D程序,它是多文档窗口形式。
2. X3D-Edit运行后会调用默认的newScene.x3d,当然,我们也可单击File | New菜单重新创建。
3. 单击File | Save as ,将默认的newScene.x3d保存为另一个文件1.x3d,并指定到自己的文件夹中。如"d:\X3d示例\"。注意:系统一开始使用默认的保存文件名Untitled-0.x3d。
4. 单击工具栏最右边的Process XSL
按钮,弹出如图所示的对话框。根据安装需要修改其中的文件路径设置。


5. 单击"确定"按钮,将会把X3D格式转换为VRML97格式并在IE显示wrl文件场景。若此时鼠标指针为一个十字加上E,那么说明可以正常使用了。
6.在X3D-Edit中导入VRML文件,转换成X3D文件并输出:在菜单栏中的“File”文件菜单中点击“Import”导入命令,在子菜单中选择确定“VRML97(.wrl)”命令;在弹出的“Import”导入对话框中对要导入的VRML文件的位置进行确认;点击“Import”按钮确定后,在弹出的对话框中选定为“Import into a new document”(导入并新建一个文档),点击“OK”按钮确定;这时就完成了VRML文件的导入,并在一瞬间自动转换成了未定标题的X3D文件untitled-1.x3d,通过X3D-Edit程序X3D文件的结构显示,可以清晰地看到X3D文件遵守XML编码规范。相对于VRML源代码来说,可读性有了显著的提高,不过源代码的尺寸大小也明显增加了。在X3D-Edit程序中,可以通过点击X3D文件的结构显示树,则在对应的属性设置对话框中进行更改设置。转换后需修改红色提示部分内容,如加入概貌profile(没有也可以),属性值如field中accessType由eventOut改为outputOnly,type:Vector3Float改为SFVec3f等,完成X3D文件后,即可保存输出。
7. X3D-Edit3.0提供了更为丰富的处理功能,选择第一个Process XSL
按钮,根据安装需要修改弹出对话框中的文件路径设置,单击"确定"按钮,将会在IE显示x3dv文件场景。

二、 修改head节点下的内容
head 是 X3D的第一个节点,放在场景节点的开头。它对应于HTML中的标记。该节点下的内容可以是component (组件)、metadata(元数据)或自定义内容。下面来修改:
1. 单击
,将会在节点属性窗口中显示其属性,如下图所示。

说明:meta (metadata) 元数据为场景提供一些信息,它使用和HTML的meta 标签一样的定义。每个元数据包括名称(name)和内容(content)。
2. 单击属性窗口中的content属性右侧的Value单元,弹出如下图所示的窗口。

3. 将内容改为"1.x3d"后,单击OK按钮。
4. 按同样的方法将head节点下的内容修改成下图所示。

提示:删除某条节点内容,只需选定它后按delete键,或者右击节点,从弹出的快捷菜单中选择"Delete"。另外,有些浏览器不支持中文元数据,最好全部使用英文。
三、 添加几何节点(Shape)
在X3D 程序(文档)中,Scene 是X3D场景图的根节点,所有的场景节点都应添加到该节点下,并且在每个文件里只允许有一个Scene 根节点。操作如下:
1. 保留Scene下的NavigationInfo节点内容,删除
。
2. 单击Scene节点。然后在节点区中,单击 Allowed Nodes 标签。
3. 从节点列表中,找到Shape,并右击Shape,从弹出的快捷菜单中选择"Insert As Child"。编辑器会自动定位到添加的Shape节点。
说明:Shape(几何)节点用于几何体、文本和外观特性的父节点。
四、 添加文本节点(Text)
Text 是一个用于文本显示的几何节点,在添加之前一定要添加场景外观节点(Appearance)。Appearance 指定几何对象的视觉效果,它可以有Material、Texture 和TextureTransform 节点。
1. 从节点列表中,找到Appearance(外观),右击后从弹出的菜单中选择"Insert As Child"。
2. 在刚才添加的Appearance节点下添加Material节点。
说明:Material 指定相关几何节点的表面材质属性。用于光源的属性如下表所示:
属性 | 含义 | 默认值 | 值的范围 |
diffuseColor | 反射光 | 0.8 0.8 0.8 | RGB颜色分量值为0~1 |
emissiveColor | 自身发出的光 | 0 0 0 | 同上 |
specularColor* | 高光 | 0 0 0 | 同上 |
shininess* | 光强 | 0.2 | 0~1 |
ambientIntensity* | 环境光 | 0.2 | 0~1 |
transparency* | 透明度 | 0 | 0~1 |
注意:打*号的属性可能不起作用。
3.在Material节点属性窗口中将diffuseColor的属性改为"0 1 0",颜色为绿色。注意:在输入这些数值后一定要按Enter结束。
说明:RGB颜色分量的含义是,R表示红色,G表示绿色,B表示蓝色。各颜色分量的值均在0到1之间,每个值用空格隔开。
4. 单击Appearance节点,从节点列表中,找到Text,然后右击Text,选择"Insert After"添加Text节点。
5. 在Text节点属性窗口中,将String属性内容设为""Hello, X3D!" "2004-1-2"" ,结果如下所示。
说明: "你好, X3D" 和 "2004-1-2"文本之间有空格且两个文本上有双引号,之所以这么做是希望将其显示成两行文本。

五、 设置文本风格
字体风格的设置是由FontStyle节点指定的,它的属性如下表所示:
属性 | 含义 | 默认值 | 可以选择的值 |
family | 字体名 | "SERIF" | "SERIF", "SANS", "TYPEWRITER":前两个是可变宽度的字体,最后一个是等宽字体 |
style | 字体风格 | PLAIN | PLAIN(常规), BOLD(粗体), ITALIC(斜体), BOLDITALIC(粗斜体) |
justify | 位置调整 | "BEGIN" | "FIRST"(首字符对齐), "BEGIN"(左对齐), "MIDDLE"(居中), "END"(右对齐) |
size | 字体大小 | 1 | 实数值 |
spacing | 行间距 | 1 | 实数值 |
horizontal | 是否水平方向 | True | True(水平方向), False(垂直方向) |
leftToRight | 字符是否从左到右 | True | True(从左到右), False(从右到左) |
topToBottom | 字符是否从上到下 | True | True(从上到下), False(从下到上) |
下列就来将上述两行文本居中斜体显示,且行距设为2倍。
1. 在Text节点下添加一个子节点FontStyle。
2. 在FontStyle节点属性窗口中,将style属性内容选择为ITALIC。
3. 在justify属性栏内输入 "BEGIN" "MIDDLE",然后按回车。
4. 在spacing属性栏内输入2.0,然后按回车。这样代码就变成:
![]()

但是,BS Contact 6.1好像对文本支持得不够好,justify属性看不出效果,这是因为BS Contact自动将场景进行最大化居中缩放处理。

