月份:2008年6月

Unity3D以中间件供应商的方式支持Wii平台开发制作授权.

Unity,领先的3D游戏开发游戏工具供应商,今天宣布它将作为一个授权的中间件供应商支持任天堂Wii控制台.Unity3D引擎是创建3D单机游戏,Web游戏和领先的移动设备和电视游戏不二的选择.

“Unity3D简化游戏开发过程使使用者能迅速和有效的创造和移植游戏到Wii之上”,Unity总裁兼首席执行官大卫说,”Unity3D提供最快的制作周期,使开发商能尽量利用Wii来创新.开发人员可以创建丰富炫丽的3D内容,通过这一个过程,无论在什么平台之上与其他任何可用的工具相比都将是最简单,支持性最好的.”

Unity3D引擎,允许开发人员创建,修改,移植对Wii的游戏功能,具有以下特点:

实时预览:播放按钮允许开发人员即使预览他们的游戏创作内容,目前正是因为它的存在,无论在项目制作的任何阶段,用户都可以实时的去修改任何对象的属性和预览结果.

原文如下:
Unity Technologies, a leading 3D game development tool provider, today announced it is supporting the Nintendo Wii™ console as an authorized middleware provider. The Unity game engine is the cutting-edge choice for creating visually-rich, 3D games for the desktop, Web, and leading mobile devices and video game consoles.

“Unity has streamlined the game development process with an engine that is tuned for quickly and efficiently creating and porting games to the Wii,” said David Helgason, CEO of Unity Technologies. “Unity provides the fastest iteration time, which is crucial when a developer wants to make best use of the Wii console’s innovative controllers. Developers can create rich, visually engaging 3D content through a process that is simpler and more seamless than any other tool set available — regardless of the platform.”

Unity’s game engine allows developers to create, modify and iterate on Wii game functionality with the following features:

Live Preview: The play button allows developers to instantly preview their game inside the authoring environment exactly as it currently exists, regardless of the development phase. Users can modify any object’s properties and see the results in real-time without pausing.

Unity3D宣布登陆iPhone手机平台

Unity3D,一种原本只在桌面和网页中展示3D虚拟现实的技术,2008年3月31日这天,公司正式宣布Unity进军无线领域,将全力支持开发者为拥有众多粉丝的iPhone手机平台开发3D游戏。

Unity出色的3d引擎是其创造高质量3D游戏和真实视觉效果的核心技术,为3D游戏提供了强大的源动力,Unity不论在传统的桌面平台还是在主导网页游戏的shockwave.com平台都强势立足,如今更是进入了业界领先的无线平台-iPhone手机游戏平台。

Unity科技的执行总裁David Helgason说:”随着Unity支持iPhone手机游戏的开发,Unity自然的成为了目前唯一一款可以提供所有平台植入能力的游戏开发软件,这包括了Xbox、PS、掌上游戏机、PC/Mac系统和今天的iphone,而这正是所有3D游戏开发高手们梦寐以求的现实,特别的是,Unity对iPhone平台的这种支持从分考量了开发者的真正需求:那就是开发出更移动更便捷,更让现代人”on-the-go”(一切都在变化中)的游戏!”

原文如下:

Unity is Coming to iPhone
SAN FRANCISCO, CA – Mar. 31, 2008

Unity Technologies, a 3D game development tool provider for creating console-quality games for the desktop and Web, today announced that the company will support game development for the popular iPhone platform.

The Unity engine is the core technology that facilitates visually rich, engaging 3D game play, whether it’s on a traditional desktop, or on the Web at major gaming sites like shockwave.com, or now on the world’s leading mobile device – the iPhone.

“With iPhone support, Unity is poised to become the single source for game developers who want to create best-of-breed, 3D-quality games that can be easily and quickly ported to all platforms, including consoles, devices, PC/Mac,

and now, the iPhone,” said David Helgason, CEO of Unity Technologies. “Specifically, Unity’s support of iPhone addresses the developer’s need to create more and better mobile/portable games that support the consumers ‘on-the-go’ lifestyle.”

详解华南虎照造假事件(视频+组图)

今天突然看到新闻说周老虎有结果了,全程都是周正虎一个人造假,匪夷所思…匪夷所思…

转帖:http://blog.sina.com.cn/s/blog_43ac70a101009vj2.html

  虎照一事沸沸扬扬几个月,最后成了陕西年度十大新闻事件之一,华南虎出来了,周正龙出名了。受当地媒体之意,子乐早在去年年底就将其公开于博客之上。内容如下:


2007年10月3日,陕西镇坪县村民周正龙拍下了被称为中国虎的中国独有虎种—野生华南虎的照片,证明野生华南虎在中国没有灭绝,而且极可能存有一个野生华南虎的繁殖小种群。此后引发包括一些网友和专家对该照片真伪的质疑。从此争论不断升级…

关键词:华南虎周正龙

   公众对虎照的质疑,并不表明我们的社会就出现信任危机。恰恰是在公众证明虎照为假的当口上,当事人、当事方,特别是一些权威部门和专家,有没有求真务实、实事求是的态度,则直接左右着信任危机的产生或者消除。

    没有什么比坦诚与坦白,更能驱散笼罩真相的迷雾,更能取得公众的谅解。只要勇于把真正的底牌亮诸公众,那么,身体里面的诚实的民族基因还没有变异,公众还会对政府部门、专家乃至我们的社会,保持足够的信心。

  可就在今天上午,(6月29日)早上10点,万万让人难以置信,陕西省新闻办召开新闻发布会,陕西省政府新闻发言人、省政府办公厅负责人徐春华,省公安厅新闻发言人、副厅长白少康,省监察厅新闻发言人、副厅长岳崇应邀发布了“华南虎照片事件”调查处理的有关情况,并回答了记者提问。


6月29日,陕西省政府新闻发言人通报“华南虎照片事件”调查处理情况。

  徐春华说,省林业厅在没有派员进行实地调查、也没有进行严格科学鉴定的情况下,宣布“镇坪县发现野生华南虎”,公布了周正龙提供的两张华南虎照片,引起了公众和媒体的广泛质疑和批评。事实过程表明,这种违反规定发布虚假消息的错误行为,误导了公众和舆论,损害了陕西形象,造成了十分不良的后果。省政府对“华南虎照片事件”高度重视,对舆情、民意十分关注。事件发生后即对省林业厅的违规违纪行为进行了严厉批评,责成他们按照国家林业局的要求积极推进华南虎照片委托鉴定工作,尽快查清事实,给广大公众和媒体一个公正、客观、负责任的结果。之后专门发出《通报》,公开进行通报批评,责成省林业厅向社会致歉并向省政府作出书面检查。省政府还专门成立了处理华南虎照片问题领导小组,本着审慎、负责、依法行政的原则认真开展调查处理。在华南虎照片鉴定难以进一步推进的情况下,省政府责成省监察厅和安康市分别对省林业厅和镇坪县有关部门在“华南虎照片事件”中的行政行为展开调查。


这是新闻发布会开始前,工作人员发放的调查材料

  备受公众和媒体关注的“华南虎照片事件”,经过监察、公安机关艰苦细致的工作,已经有了明确结果。经查实,周正龙拍摄的“华南虎”照片是一个用老虎画拍摄的假虎照。目前,周正龙已经被公安机关以涉嫌诈骗罪报请检察机关批准逮捕,经省政府批准,省监察厅决定撤销省林业厅做出的“经鉴定周正龙提供的华南虎照片是真实的”和“对周正龙奖励两万元”的行政决定,对省林业厅和镇坪县13名相关公务人员作出了严肃处理。


这是警方在发布会现场展示的幻灯图片

6月29日,警方在现场展示周正龙拍照用的虎图。

  据白少康介绍,公安机关介入后,通过周正龙所拍虎照进行分析研究,在距镇坪县城关镇关彩村15公里的神州湾马道子林区北坡,找到了“拍虎”地点,通过现场勘查和现场重建,排除了周正龙拍摄活体野生华南虎的真实性基础。鉴于周正龙造假涉嫌诈骗犯罪。遂侦察并依法传唤审查周正龙。在大量事实和有力证据面前,周正龙交待了其为骗取钱财用老虎画拍摄华南虎照片的犯罪事实。根据周正龙的供述,公安机关从其家中提取了造假所用的老虎画和木质虎爪模具。


6月29日,警方在发布会现场展示从周正龙家找到的虎图。

6月29日,警方在发布会现场展示周正龙拍摄虎脚印所用的模具。

  岳崇说,相关公务人员在“华南虎照片事件”中工作极不负责任,作风极端草率,违规违纪行为极其严重。经省政府批准,监察机关对省林业厅和镇坪县13名相关公务人员作出了严肃处理。对镇坪县县长吴平进行诫勉谈话;对镇坪县副县长杨高给予行政警告处分;对镇坪县林业局局长覃大鹏、经贸局局长谢坤元分别给予行政记大过处分,县政府已决定提请县人大常委会免去其局长职务;县野生动植物保护管理站干部李骞因虚造华南虎勘验报告等严重失职行为被开除公职。对省林业厅厅长张社年给予行政警告处分;对省林业厅副厅长朱巨龙、孙承骞分别给予行政记过处分,并免去副厅长职务;对省林业厅野生动植物保护处处长王万云、信息宣传中心主任关克给予撤职处分。


周正龙(资料照片)
http://player.youku.com/player.php/sid/XMTMxNDA5MTI=/v.swf

央视全程报道华南虎照造假事件

  此案就这样结了,以周正龙入狱为结局。看来很圆满,但在百姓心中,道德审判才刚刚开始,俩副厅长被免了,当初谁是始作俑者?!为什么要造假?钱吗?古有曹冲称象,今有正龙拍虎。恭喜中国的成语里又诞生了个新的语词!词语解释:正龙拍虎:比喻为了骗取钱财或者名利。欺上瞒下不择手段。刀架在脖子上也不承认,还有很多人在帮助这个谎言!

  此事件影响及其恶劣,严重误导了民众和舆论,并且得到了有关部门的默许和暗中支持,骗取了国家的钱财,政府部门的不作为和乱作为,很伤我们老百姓的心,给整个陕西带来了不好的印象。铁幕重重!要以周先生为突破口,深挖真正的罪魁祸首。此事被国际顶尖杂志科学刊登,让国际上的学者耻笑中国,严重影响了国家的声誉,希望有关部门对此事严肃处理,严惩不殆以绝后患!

  就此事件,我感到很多迷茫与困惑,让一个老农民忽悠了大半个中国,难道一个农民骗子造假谋骗了全国人民,近一年才真相大白,相关部门办事效力太低,也应追究责任,这是陕西人的悲哀。深想:水好像很深!我只疑问一个:“ 根据周正龙的供述,公安机关从其家中提取了去年10月3日拍摄假虎照时所用的老虎画1幅、木质虎爪模具1个。从为其提供老虎画的曹某家中提取了同时购买的另一幅相同的老虎画。”—曹某一般买年画会一对一的买??常人是这样买的吗?周正龙的个人水平不可能完成场面的造假与拍摄。难道另有隐情未被暴露?当然,这牵扯到了很多很多,一头的污水,只有默默的等着真相大白吧! 

Bs Contact 文本"USE_TEXTURE"模式测试

Bs Contact V7.1在字体支持方面有个小小更新,就是在文本节点增加了”USE_TEXTURE “模式,这个可以改善增加Utf-8字符的范围,也就是说对对中文的支持好看了一些哦.

Ps:86vr.com算是没落了,全是木马,无语,挺好一个站,被收购者给糟蹋了.唉.

注意,字符串一定要用Utf8编码,否则会让Bs Contact崩溃,出现下面的框框.

这是ASCII转Utf8工具
点击下载此文件

#VRML V2.0 utf8

Background {
    skyColor [ .1875 .5078 .9843, .1875 .5078 .9843, .9414 .9 .9 ]
    skyAngle [ .2, 1.571 ]
    groundColor [ 0 0 0, .9414 .9 .9 ]
    groundAngle [ 1.571 ]
}

Transform {
    translation    0 0 0
    children Shape {
        appearance Appearance {
            material Material {
                diffuseColor 0 0 1
                emissiveColor 0 0 1
            }
        }
        geometry  Text {
            string "欢迎光临小可博客!(默认)"
            fontStyle FontStyle    {
                
                family [ "STHeiti" "Arial" "SANS" ]
                style "PLAIN"
                justify    "MIDDLE"
            }
        }
        
    }
}

Transform {
    translation    0 1 0
    children Shape {
        appearance Appearance {
            material Material {
                diffuseColor 0 0 1
                emissiveColor 0 0 1
            }
        }
        geometry  Text {
            string "欢迎光临小可博客!(轮廓线)"
            fontStyle FontStyle    {
                
                family [ "STHeiti" "Arial" "SANS" ]
                style "OUTLINE"
                justify    "MIDDLE"
            }
        }
        
    }
}

Transform {
    translation    0 2 0
    children Shape {
        appearance Appearance {
            material Material {
                diffuseColor 0 0 1
                emissiveColor 0 0 1
            }
        }
        geometry  Text {
            string "欢迎光临小可博客!(粗体纹理)"
            fontStyle FontStyle    {
                
                family [ "STHeiti" "Arial" "SANS" ]
                style "BOLD USE_TEXTURE"
                justify    "MIDDLE"
            }
        }
        
    }
}

Transform {
    translation    0 3 0
    children Shape {
        appearance Appearance {
            material Material {
                diffuseColor 0 0 1
                emissiveColor 0 0 1
            }
        }
        geometry  Text {
            string "欢迎光临小可博客!(斜体纹理)"
            fontStyle FontStyle    {
                
                family [ "STHeiti" "Arial" "SANS" ]
                style "ITALIC USE_TEXTURE"
                justify    "MIDDLE"
            }
        }
        
    }
}

Transform {
    translation    0 4 0
    children Shape {
        appearance Appearance {
            material Material {
                diffuseColor 0 0 1
                emissiveColor 0 0 1
            }
        }
        geometry Text {
            string "欢迎光临小可博客!(默认纹理)"
            fontStyle FontStyle    {
                
                family [ "STHeiti" "Arial" "SANS" ]
                style "PLAIN USE_TEXTURE"
                justify    "MIDDLE"
                language "zh"
            }
        }
        
    }
}

国际禁毒日-依法禁毒、构造和谐

今天是国际禁毒日,身为禁毒志愿者,提倡大家共同宣传禁毒知识,共同抵制毒品!      

每年的6月26日是联合国确定的国际禁毒日(International Day Against Drug Abuse and Illicit Trafficking)

全球每年20万人因毒而亡

毒品不但影响着成年人,孩子们也正受其侵蚀.2008年3月3日,在阿根廷首都布宜诺斯艾利斯以北310公里的罗萨里奥,16岁的巴勃罗拿着一根掺有名为”paco”的烟.”paco”是一种混合有可卡因和其他有毒物质的毒品.

200世纪80年代,面对毒品在全球日趋泛滥、毒品走私日益严重这一严峻形势,联合国1987年6月在奥地利维也纳召开了关于麻醉品滥用和非法贩运问题的部长级会议.会议提出”爱生命、不吸毒”的口号,并建议将每年的6月26日定为”国际禁毒日”.同年12月,第42届联合国大会通过决议,正式将每年6月26日确定为”国际禁毒日”.

据统计,全球每年因滥用毒品致死的人数高达20万,上千万人因吸毒丧失劳动能力,吸毒人群日益年轻化.

据联合国《2007年度世界毒品报告》提供的数据,2006年全球鸦片总产量达6610吨,创历史最高纪录,比2005年增加43%.其中,阿富汗鸦片产量为6100吨,比2005年增长2000吨.其主要原因是阿富汗的罂粟种植面积从2005年的10.4万公顷增至2006年的16.5万公顷.

用PHP动态生成虚拟现实VRML网页

多年前本人开始从事三维动画方面的学习,后学习了PHP,发现可以通过PHP动态生成VRML文档,有点类似于Generator动态生成Flash的方式。
由于VRML博大精深,这里只介绍一个简单的例子,还可以将各种VRML结点存入数据库中,这样的虚拟现实网页将……,爽!
下面是源程序。注意:在服务器上,要将让PHP处理wrl格式的文档,否则后果将是没有任何虚拟现实。本源程序直接存成wrl文件

<?php header(“Content-type: application/x-vrml”);$txt=”#VRML V2.0 utf8

DEF leftBox Transform
{
translation -5 0 0
children
[
Shape
{
appearance Appearance
{
material Material
{
diffuseColor 1 0 0
}
}
geometry Box{}
}
DEF SphereChild Shape
{
appearance Appearance
{
material Material
{
diffuseColor 1 0 1
}
}
geometry Sphere
{
radius 1.2
}
}
]
}

DEF rightBox Transform
{
translation 5 0 0
children
[
Shape
{
appearance Appearance
{
material Material
{
diffuseColor 0 0 1
}
}
geometry Box{}
}
]
}

DEF onoff Transform
{
translation 0 -1 0
children
[
Shape
{
appearance Appearance
{
material Material
{
diffuseColor 0 1 0
}
}
geometry Box{}
}
DEF TS TouchSensor{}
]
}

DEF S Script
{
eventIn SFBool isActive
eventOut MFNode child
field MFNode testNode USE SphereChild
url
“javascript:
function isActive(value)
{
if (value)
{
child=testNode;
}
}

}

ROUTE TS.isActive TO S.isActive
ROUTE S.child TO leftBox.removeChildren
ROUTE S.child TO rightBox.addChildren”;echo $txt;
?>

利用JavaScript在VRML与HTML之间通信

最近常有人问JavaScript的问题,好吧,我们来看看JavaScript的实现方法吧。

这是以前VBScript中的一个例子,现在我们用JavaScript来做。
在html中比较关键的代码如下:
script language=”Javascript”
!–
function M_o(){
M_e=Scene.Engine;
M_e.Nodes(“my_Time”).Fields(“enabled”)=1;
M_x.value=M_e.Nodes(“my_view”).Fields(“translation”).x;
M_y.value=M_e.Nodes(“my_view”).Fields(“translation”).y;
M_z.value=M_e.Nodes(“my_view”).Fields(“translation”).z;
}
function M_c(){
M_e=Scene.Engine;
//新建对象M_e,它所指向的正是VRML场景Scene.
M_e.Nodes(“my_Time”).Fields(“enabled”)=0;
//将VRML场景中的”my_Time”节点的”enabled”值设为FALSE
M_x.value=M_e.Nodes(“my_view”).Fields(“translation”).x;
M_y.value=M_e.Nodes(“my_view”).Fields(“translation”).y;
M_z.value=M_e.Nodes(“my_view”).Fields(“translation”).z;
//将VRML场景中的”my_view”的x,y,z坐标值分别反馈到html页中的三个文本框中.
}
!–
/script
其中定义了两个过程M_o()和M_c(),来分别响应HTML页中按钮的点击.

以及
OBJECT id=”Scene”
CLASSID=”CLSID:86A88967-7A20-11d2-8EDA-00600818EDB1″
WIDTH=”300″
HEIGHT=”300″
PARAM NAME=”Scene” value=”kk.wrl”
/OBJECT
注意id=”Scene”不要丢了,这是给这个VRML场景取的名字.当然你也可以取成其它的名字,不过要与VBScript中的保持一致.

附录1,html代码:
html
head
script language=”Javascript”
!–
function M_o(){
M_e=Scene.Engine;
M_e.Nodes(“my_Time”).Fields(“enabled”)=1;
M_x.value=M_e.Nodes(“my_view”).Fields(“translation”).x;
M_y.value=M_e.Nodes(“my_view”).Fields(“translation”).y;
M_z.value=M_e.Nodes(“my_view”).Fields(“translation”).z;
}
function M_c(){
M_e=Scene.Engine;
M_e.Nodes(“my_Time”).Fields(“enabled”)=0;
M_x.value=M_e.Nodes(“my_view”).Fields(“translation”).x;
M_y.value=M_e.Nodes(“my_view”).Fields(“translation”).y;
M_z.value=M_e.Nodes(“my_view”).Fields(“translation”).z;
}
!–
/script
/head
body
OBJECT id=”Scene”
CLASSID=”CLSID:86A88967-7A20-11d2-8EDA-00600818EDB1″
WIDTH=”300″
HEIGHT=”300″
PARAM NAME=”Scene” value=”kk.wrl”
/OBJECT
input type=button value=”RUN” onClick=”M_o()”
input type=button value=”STOP” onClick=”M_c()”
x:y:z:/body
/html
附录2,VRML代码:
#VRML V2.0 utf8

DEF my_view Transform{
translation 1 1.2 16
rotation 0 1 0 -1
children [
DEF my_viewpoint Viewpoint {
description “AutoRun”
orientation 1 0 0 0
position 0 0 0
}
]
}
DEF old_Viewpoint Viewpoint {
description “Entry point”
orientation 0 1 0 -1
position 1 1.2 16
}
DirectionalLight {
ambientIntensity 0.8
intensity 0.6
direction 0 -1 0
}
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry ElevationGrid {
xDimension 4
xSpacing 5.5
zDimension 4
zSpacing 5.5
height [0.8 0.1 0.4 0.5
0.5 0.4 0 0.4
0.2 0.1 0.4 0.3
0.5 0.6 0.7 0.2]
}
}
Transform {
translation 8 3.5 8
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 1
}
}
geometry Box {size 1 1 1 }
}
]
}
Transform {
translation 15 0.6 15
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0 1 0
}
}
geometry Cylinder {
height 1.2
radius 0.4
}
}
]
}

DEF my_Time TimeSensor {
cycleInterval 20
enabled FALSE
loop TRUE
}
DEF my_Position PositionInterpolator {
key [0 0.25 0.38 0.5 0.75 1.0]
keyValue [1 1.2 16,2 1.2 1,7 1.2 1,
15 1.2 1,14 1.2 12,1 1.2 16]
}
DEF my_Direction orientationInterpolator {
key[0 0.25 0.38 0.5 0.75 1.0]
keyValue [0 1 0 -1,0 1 0 -2.9,0 1 0 3.14,
0 1 0 2.9,0 1 0 1.4,0 1 0 -1]
}
DEF my_LookUpAngle orientationInterpolator {
key [ 0 0.25 0.38 0.5 0.75 1.0]
keyValue [1 0 0 0,1 0 0 0,1 0 0 0.3,
1 0 0 0,1 0 0 0,1 0 0 0]
}
ROUTE my_viewpoint.bindTime TO my_Time.set_startTime
ROUTE my_viewpoint.isBound TO my_Time.set_enabled

ROUTE my_Time.fraction_changed TO my_Position.set_fraction
ROUTE my_Time.fraction_changed TO my_Direction.set_fraction
ROUTE my_Time.fraction_changed TO my_LookUpAngle.set_fraction

ROUTE my_Position.value_changed TO my_view.set_translation
ROUTE my_Direction.value_changed TO my_view.set_rotation
ROUTE my_LookUpAngle.value_changed TO my_viewpoint.set_orientation

*因显示问题,将HTML语言的<和>全部除去

VRML交互程序编程

利用Interpolator内插器节点和TimeSensor时间传感器节点,再加上ROUTE语句,人们可以编写出VRML动画程序。利用其它传感器Sensor节点,人们可以编写出VRML交互程序。下面我们对这些节点一一介绍:

一. CylinderSensor节点

作用: 可使鼠标的移动转变成形体的绕自身Y轴的旋转运动。

通过坐标变换,可使形体绕任意轴旋转。

可以用鼠标拖动一个形体,来使自身旋转。

也可以用鼠标拖动一个形体,来使另一个形体旋转

主要字段: maxAngle 可用来控制最大旋转角度

minAngle 可用来控制最小旋转角度

rotation_changed 向外发出的旋转信号

编程步骤1: 利用Transform构造一个坐标系,里面放置两个内容:
一个形体和一个CylinderSensor,它们放置在一个方扩弧里面。

用DEF对Transform和CylinderSensor命名,
假设Transform的名字为NAMETT,CylinderSensor的名字为NAMECC。

编程步骤2: 通过编写一个ROUTE语句,使鼠标的移动变成形体的转动。

编写的ROUTE语句为:ROUTE NAMECC.rotation TO NAMETT.rotation
(也可以写成:ROUTE NAMECC.rotation_changed TO NAMETT.set_rotation)

点击这里可运行书中P66页的EX7_01.WRL(黄色立方体可用鼠标拖动旋转)
点击这里可阅读书中P66页的EX7_01.WRL(黄色立方体可用鼠标拖动旋转)

点击这里可运行书中P67页的EX7_02.WRL(用鼠标拖动右下角的形体,可使桌子旋转)

点击这里可阅读书中P67页的EX7_02.WRL(用鼠标拖动右下角的形体,可使桌子旋转)

二. PlaneSensor节点

作用: 可使鼠标的移动转变成形体沿自身Z=0的平面的移动。

通过坐标变换,可使形体绕任意轴旋转。

可以用鼠标(按住鼠标左键)拖动一个形体,来使自身移动。

也可以用鼠标(按住鼠标左键)拖动一个形体,来使另一个形体移动

主要字段: maxPosition 可用来控制最大移动位置
minPosition 可用来控制最小移动位置
translation_changed 向外发出的移动信号

编程步骤: 与CylinderSensor相同

点击这里可运行书中P69页的EX7_03.WRL(红色圆锥可用鼠标拉着在板上移动)

点击这里可阅读书中P69页的EX7_03.WRL(红色圆锥可用鼠标拉着在板上移动)

点击这里可运行书中P70页的EX7_04.WRL(拖动板上的两个小形体,可带动板上的大形体)

点击这里可阅读书中P70页的EX7_04.WRL(拖动板上的两个小形体,可带动板上的大形体)

三. SphereSensor节点

作用: 可使鼠标的移动转变成形体绕自身原点的转动

可以用鼠标(按住鼠标左键)拖动一个形体,来使自身转动

也可以用鼠标(按住鼠标左键)拖动一个形体,来使另一个形体转动

主要字段: rotation_changed 向外发出的移动信号

编程步骤: 与CylinderSensor相同

点击这里可运行书中P74页的EX7_06.WRL(用鼠标转动球,可使小丑联动)

点击这里可阅读书中P74页的EX7_06.WRL(用鼠标转动球,可使小丑联动)

四. ProximitySensor节点

作用: 可以检测到观察点接近的信号,利用它可控制其它操作,如发出声音,让形体运动、让形体颜色变化等

主要字段: size 用来设定可探测范围,其中心在局部坐标系的原点

enterTime 发出接近信号

exitTime 发出退出信号

编程步骤1: 在一个局部坐标系中,给出一个用DEF命名的ProximitySensor和一个形体

编程步骤2: 通过一个ROUTE语句,将ProximitySensor的探测信号传给一个时间传感器或传给一个Javascript程序,使程序发生相应的变化,如动画、发出声音、改变颜色等。

假设一个ProximitySensor的名字为PPP,一个时间传感器TimeSensor的名字为TTT,则这个ROUTE语句可写成下面的形式,从而启动一个动画效果:

ROUTE PPP.enterTime TO TTT.startTime

点击这里可运行书中P72页的EX7_05.WRL(走进大门,门将打开,远离大门,门将关闭)

点击这里可阅读书中P72页的EX7_05.WRL(走进大门,门将打开,远离大门,门将关闭)

五. TouchSensor节点

作用: 可接收鼠标点击形体的动作,并使程序发生相应变化,如动画、发出声音、改变颜色

主要字段: isOver 当鼠标移到形体上方时,形体发出的逻辑信号

touchTime 当鼠标点击形体时,形体发出的时间信号

编程步骤1: 在一个局部坐标系中,给出一个形体及用DEF命名的TouchSensor

程序运行时,当鼠标移到形体上时,TouchSensor准备接受点击信号,同时发出isOver信号

编程步骤2: 利用isOver或touchTime信号,使程序发生相应变化,如动画、发出声音、改变颜色

下面是一个利用TouchSensor的最简单的程序:
#VRML V2.0 utf8

DEF TRAN Transform {
children [
Shape {
appearance Appearance {material Material {diffuseColor 1 0 0}}
geometry Box {}
}
DEF TTT TouchSensor {}
]
}

DEF TS TimeSensor {
cycleInterval 10
}
DEF pi PositionInterpolator{
key [0 0.5 1]
keyValue [0 0 0 , 0 5 0, 0 0 0]
}
ROUTE TTT.touchTime TO TS.startTime
ROUTE TS.fraction_changed TO pi.set_fraction
ROUTE pi.value_changed TO TRAN.translation

Background {skyColor 1 1 1}