cortona的html-javascript的外部编程接口

Cortona还是Contact,真是个问题。BS Contact提供的javascript接口是以传递字符串的方式工作的,简单而有弹性。不过处理字符串是个脏活儿。

            而Cortona Automation provides full control over the VRML scene,everything is described in Cortona SDK.不过好像没人有cortona sdk完整版,价格是:$749.95 USD,都没银子啊。演示版是用来吊人胃口的,信息量太少。搜了一遍又一遍,所得点滴信息整理如下:

在html中嵌入cortona 浏览器

<OBJECT name=”objectName” id=”objectName” CLASSID=”CLSID:86A88967-7A20-11d2-8EDA-00600818EDB1″ CODEBASE=”http://www.parallelgraphics.com/bin/cortvrml.cab#Version=4,2,0,93″ WIDTH=”400″ HEIGHT=”300″>
<param name=”src” value=”your_wrl_file.wrl”>
<param name=”VRML_DASHBOARD” value=”TRUE”>
<param name=”WaitForAllResources” value=”TRUE”>
<param name=”ContextMenu” value=”TRUE”>
<param name=”RendererHints” value=”32″>
<param name=”RendererName” value=”DirectX Renderer”>
              <param name=”LoadDroppedScene” value=”FALSE”>
<param name=”HeadLight” value=”FALSE”>
</object>

从html-javascript访问vrml场景

 1 浏览器对象句柄:objectName.Engine

           2            访问SFFloat:

   objectName.Engine.Nodes(“your_script_node”).Fields(“your_eventIn_field_name”) = someValue;

        e.g:
       objectName.Engine.Nodes(‘nodeName’).Fields(“radius”)=12;

       objectName.Engine.Nodes.Item(‘node’).Fields.Item(‘set_bind’).Value = true;

           3            访问SFVec3f:

                    objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).x

                    objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).y

                    objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).z

         4  访问SFColor

     objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).Red

                  objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).Green

                  objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).Blue

           6            往复值域里添加单值

                 objectName.Engine.Nodes(‘nodeName’).Fields(‘fieldName’).Add(some_SFValue);

           7    渲染器: objectName.RendererName

                   ‘OpenGL Renderer’ 或 ‘DirectX Renderer’

           8           根节点集合:

                  objectName.Engine.RootNodes

                  objectName.Engine.RootNodes(1).Fields(“rotation”).angle=3.14;

          9           根节点集合的Add方法:

                objectName.Engine.RootNodes.Add(objectName.Engine.CreateVrmlFromString(“Transform {translation 0 10 5 children[Shape {geometry Box {}}]}”));

               或:  

               newrootnode = objectName.Engine.CreateNodeFromString(“…”);

               objectName.Engine.RootNodes.Add(newrootnode);

10 这个在VB里可用,javascript里就不知道了。

                myfield = engine.CreateField(“SFNode”)
                testnode = engine.Nodes.Item(“test”)
                myfield.value = testnode

11         访问SFOrientation

               objectName.Engine.Nodes(‘nodeName’).Fields(‘orientation’).x=0;
               objectName.Engine.Nodes(‘nodeName’).Fields(‘orientation’).y=1;
               objectName.Engine.Nodes(‘nodeName’).Fields(‘orientation’).z=0;
               objectName.Engine.Nodes(‘nodeName’).Fields(‘orientation’).angle=1.57;

12 访问复值:

             objectName.Engine.Nodes(“myOrientationInterpolator”).Fields(“keyValue”).Y(0);

  javascript 响应事件

             <script for=”objectName” event=”OnSceneLoaded(Success)” language=”JavaScript”>

             </script>
            <script for=”objectName” event=”OnSceneUnLoaded()” language=”JavaScript”>
                   objectName.renderer.name
                   objectName.renderer.isReady
                   objectName.renderer.path
                   objectName.renderer.version

            </script>

            Advise works in the following way: you must create a javascript function with three parameters and then call Advise on any exposedField or eventOut with this function. When an event is generated, cortona calls this function, passing the event value, current timestamp and the hint value specified on the Advise call.

<script for=”objectName” event=”OnSceneLoaded(bSuccess)” language=”javascript”>
            if(bSuccess)
            objectName.Engine.Nodes(“MyTransform”).Fields(“translation”).Advise(myHandler,’my transform’);
            function myHandler(value,hint,timestamp){
            if(hint==’my transform’) …

</script>

           First you must create a javascript function in the HTML page and call Advise() for some eventOut or exposedField in the VRML scene, setting this function as the event handler:

           objectName1.Engine.Nodes(“SomeNodeName”).Fields(“someEventOut”).Advise(someFunc
tion,””);

           When the event is fired, it runs this function, which can change something in the other Cortona control:

           function someFunction(value,hint,timestamp){

                 objectName2.Engine.Nodes(“SomeNodeName”).Fields(“someEventIn”).Value=value.Value;
           }

           Engine.nodes,Engine.rootNodes还有fields(“fieldName”)显然有不少方法,哪里去找呢?

JAVAScript-EAI

BlaxxunContact(3.07以上版本)为JavaScript和VBScript提供一种应用起来非常简单的外部脚本接口,它允许你从已经命名的节点当中读写任意一个域值。以字符串形式输入的值被自动的转换成适当的类型。并且,VBScript(in Internet Explorer)与 JavaScript(in Netscape)的方法能够被VRML Script内部的Script节点调用。

浏览器句柄(

JS调用支持
以下是可用于通过JavaScript访问的blaxxun3D接口
setNodeEventIn
(String nodeName,
String eventInName,
String value) 设置已命名的节点的指定事件入口值,其value会自动转换成该事件入口的类型
getNodeEventOut
(String nodeName,
String eventOutName) 返回一个事件出口的值,并把该值转换成字符串格式
OnNextViewpoint( )
(仅用于IE浏览器!) 激活视点堆栈当中的下一个视点
setNextViewpoint( )
(仅用于Netscape浏览器!) 与上面的函数功能相同,但是只能用于Netscape浏览器

在VRML当中访问
可以在VRML文件当中访问HTML当中任何一个JavaScript函数。把下面的这个调用方法应用于Anchor节点,或者用Script节点当中的Browser . loadURL方法来指定相应的函数方法。

“javascript:myJSFunction();”

如果指定的方法是定义在一个HTML文档的其他框架当中,则目标必须用Anchor节点的parameters域或者在Browser . loadURL方法的第二个参数。请参考以下例子:

Example 1: Calling a JS-Function by an Anchor
DEF anchor1 Anchor{  JavaScript
url”javascript:externalFunction();”
parameter[“target=_self”]  
children[ #some geometry   ]
}
Example 2: Calling a JS-Function from a Script
Script{  
field MFString param [“target=someFrame”, “”]  
eventIn SFTime touch  
url”vrmlscript:  
function touch()  
{
       Browser.loadURL(‘javascript:externalFunction()’, param);  
}  

}

为了能够影响3D场景,你需要获得一个VRML浏览器的句柄。可以利用定义在embed标签当中的名称来访问插件,各自的ID定义在Objedt标签内。这些参量的详细资料请参考”Embedding blaxxunContact”

blaxxun Contact 3D (release 3.07 or higher) supports an easy-to-use external scripting interface for Javascript and VBScript. It allows to read and write any fields values of named nodes. String input values are converted automatically to the appropriate field types. Additionally VBScript (in Internet Explorer) and Javascript (in Netscape) methods can be called from internal VRMLScript script nodes.

General syntax

void Browser.setNodeEventIn( String nodeName, String eventInName, String value)

set the value for the specified eventIn converting value to the type of the eventIn
String Browser.getNodeEventOut( String nodeName, String eventOutName)
returns the value of the eventOut converted to a string
callback from internal script nodes:
Netscape Javascript: OnEvent ( String, par1, String par2, String timestamp )
Internet Explorer VBscript: <Contact3D_ID>_OnEvent ( String, par1, String par2, String timestamp )
the method OnEvent can be called from VRMLScript using the Browser.loadURL() method with 2 parameters (see example)
HTML Page contents for using the Script EAI with Microsoft and Netscape Browsers

1. Embed the VRML browser and give it a name:

<OBJECT CLASSID=”CLSID:4B6E3013-6E45-11D0-9309-0020AFE05CC8″ ID= CC3D WIDTH=100% HEIGHT=50%>

<PARAM NAME=”SRC” VALUE=”sample.wrl”>

<EMBED name= CC3D SRC=”sample.wrl” TYPE= “application/x-cc3d” WIDTH=100% HEIGHT=50%>

</OBJECT>

2. Sending an event to VRML from JavaScript:

You can send events to VRML from JavaScript using setNodeEventIn, as
shown below.    It requires, as parameters, the VRML target node, the field
that will be changed, and the value that will be sent.    The parameters can
be set as strings, and will be automatically converted to the correct
type.

function sendEvent(node, field, value)
{
document.Contact 3D.setNodeEventIn(node, field, value)
}

In the example the sendText function, shown below, uses sendEvent to send
an event to the ChangeString node in the VRML, and will change the
field set_string for that node using value.

function sendText(value)
{
sendEvent(‘ChangeString’, ‘set_string’, value);
}
3. Calling JavaScript from VRML:
Here when the touchTime event occurs, set_string is called in the
script node.    The Script method OnEvent() will be called with the specified parameters.
Of course par1 and par2 can be replaced at runtime by actual parameters.

    DEF RotationScript Script {
        field MFString newurl [ “OnEvent( par1, par2 )” ]
        field MFString param [ “” “” ]
        eventIn    SFTime       clicked
        eventIn    SFTime     set_string
        eventOut SFRotation rotation_changed
        url “vrmlscript:
            function clicked (value, time) {
              angle = Math.random()*6.283;
              rotation_changed = new SFRotation(0,1,0,angle);
            }
            function set_string (value, time) {
              Browser.loadURL(newurl,param);
            }
        “
    }

ROUTE RotSensor.touchTime TO RotationScript.set_string
and the HTML definition:
<SCRIPT language=Javascript>
function OnEvent(par1, par2, time)
{ document.sform.sfield.value = par1 + par2 + time; }
</SCRIPT>
4. Use VBScript to activate the OnEvent method with Internet Explorer:
Internet Explorer doesn’t allow to call Javascript directly from a C program. Therefore VBScript has to be used to pass the call to Javascript. The name of the sub is <objectid>_OnEvent.

<scriptlanguage=
VBScript>
<!–    sub CC3D_OnEvent(par1, par2, time)
OnEvent par1, par2, time
end sub
!–>
</script>
Examples

Please check the blaxxun Client SDK.

VRML动画编程的基础知识

1. Transform节点

作用:
建立局部坐标系,对形体进行坐标变换,从而使形体发生移动、旋转、比例变化

常用的字段:

rotation 提供旋转的角度
(四个数字,头三个数和原点构造旋转轴,第四个数给出旋转角度,右手逆时针为正方向)
scale 提供比例放大的系数
translation 提供平移的数值

children 提供坐标变换的对象,可以是形体或另一个局部坐标系

利用Transform的translation字段,书中的EX2_01.WRL经过下面的简单变化,使形体由中间移到左边

#VRML V2.0 utf8
Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}
Background{skyColor 1 1 1}
#程序结束
2. Group节点作用: 无坐标变换功能的Transform节点,因而可以用Transform替代
常用的字段:

children 提供Group的组成部分
3. DEF和USE 作用: 用于给节点语句命名,从而重复使用,DEF和USE缩短程序的好方法
4. Anchor节点作用: 使多个VRML产生链接

常用的字段:

url 提供链接的文件名
description 提供链接文件的说明

parameter 提供链接的方式(开新窗口或覆盖旧的)

children 产生链接的载体(鼠标应点击的对象)

5. Billboard节点作用: 产生广告牌效果
常用的字段:

axisOfRotation 旋转轴,(三个常用的数值:0 1 0、1 0 0、0 0 0)
children (产生广告牌效应的形体或文字)

6. Viewpoint节点作用: 确定观察位置
常用的字段:

orientation 提供观察角度
position 提供观察位置

7. Background节点作用: 设置显示背景,也可以在背景上设置图片,最多可贴六张图片
常用的字段:

skyColor 设置背景为白色

8. Fog节点
作用:使形体产生雾化效果

常用字段:

color 设置雾的颜色
visibilityRange 给出雾的影响范围
(当形体离观察点的距离大于此值时,形体的颜色与雾相同)

9. NavigationInfo节点作用: 设定程序运行方式,主要有:ANY、WALK、EXAMINE、FLY、NONE

二. VRML动画编程初步 1. 问题:如何使一个立方体动起来?

步骤1: 编写一个立方体,设定背景为白色,程序通过Transform节点,改变了形体的原始位置

#VRML V2.0 utf8
Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}
Background{skyColor 1 1 1}
#程序结束
步骤2: 定义一个时间周期TS,用的是一个时间传感器节点TimeSensor
里面给出周期数值字段cycleInterval,通过loop字段指定是否循环

#VRML V2.0 utf8
Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}

#下面四行是增加的部分
DEF TS TimeSensor {
cycleInterval 10
loop TRUE
}

Background{skyColor 1 1 1}

步骤3: 利用PositionInterpolator节点,定义形体的运动轨迹,用DEF命名为PI
意思是在十秒钟内,形体由(-5 0 0)移到(5 0 0),再回到(-5 0 0)

#VRML V2.0 utf8
Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}

DEF TS TimeSensor {
cycleInterval 10
loop TRUE
}

#下面四行是增加的内容
DEF PI PositionInterpolator {
key [0 0.5 1]
keyValue [-5 0 0 , 5 0 0]
}

Background{skyColor 1 1 1}

步骤4: 利用DEF给立方体所在的局部坐标系命名为T

#VRML V2.0 utf8
#下面一行是改变的内容,只加了头几个字符
DEF T Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}

DEF TS TimeSensor {
cycleInterval 10
loop TRUE
}

DEF PI PositionInterpolator {
key [0 0.5 1]
keyValue [-5 0 0 , 5 0 0]
}

Background{skyColor 1 1 1}

步骤5: 通过两条ROUTE语句,使形体动起来

ROUTE TS.fraction_changed TO PI.set_fraction
(时间的变化传到位置内插器)
ROUTE PI.value_changed TO T.translation
(位置内插器将特定时间的位置数值传给形体所在的局部坐标系)

下面是最终的程序:

#VRML V2.0 utf8
DEF T Transform{
translation -5 0 0
children Shape{
geometry Box{}
appearance Appearance{material Material{diffuseColor 1 0 0}}
}
}

DEF TS TimeSensor {
cycleInterval 10
loop TRUE
}

DEF PI PositionInterpolator {
key [0 0.5 1]
keyValue [-5 0 0 , 5 0 0 -5 0 0]
}

#下面两行是增加的内容
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO T.translation

Background{skyColor 1 1 1}

点击这里可运行上面的程序(ex2_02.wrl)

点击这里可阅读上面的程序(ex2_02.wrl)
2. 路由语句(P40)作用: VRML动画及交互作用的桥梁

内容: ROUTE 事件出 TO 事件进

编写步骤:

对于发出事件的传感器节点(如TimeSensor)和接收事件的节点
(如内插器节点),编写具体的内容,并用DEF命名
对于接收事件的其它节点(如定义局部坐标系的TransformGroup)
也用DEF命名,并根据具体需要,将收到的事件进传给具体参数,
从而产生动画效果

注意1:同一行ROUTE语句的事件进(eventIn)和事件出(eventOut)的类型必须相同

注意2:上面介绍的两个ROUTE语句:

ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO T.translation
也可以写成:
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO T.translation

也就是说:_changed (用于事件出)、set_ (用于事件进)可写可不写,不影响程序的运行
三. 用于VRML动画编程的内插器节点语句

用于VRML动画编程的内插器节点名称最后均为Interpolator
1. 利用ColorInterpolator产生颜色的动态变化

步骤1: 给需要变化颜色的形体材值Material命名

… DEF COLORA Material{diffuseColor 1 0 0} …

步骤2: 定义一个TimeSensor,确定变化周期及循环方式

DEF TS TimeSensor{…}

步骤3: 定义一个ColorInterpolator节点,给出颜色变化的具体方式

DEF CI ColorInterpolator {
key [ ….]
keyValue [ ….]
}

步骤4: 给出两个ROUTE语句:

一个将TimeSensor的变化传给ColorInterpolator
一个将ColorInterpolator的变化传给Material

点击这里可运行书中P54页的EX6_01.WRL(一个不断改变颜色的圆柱)

点击这里可阅读书中P54页的EX6_01.WL(一个不断改变颜色的圆柱)
2. 利用CoordinateInterpolator使形体产生动态变形 作用:可用来动态改变形体的坐标,主要用在下面节点上:

IndexedFaceSet、IndexedLineSet、PointSet、Extrusion

步骤1: 给一个Coordinate节点命名,作为相应形体coord字段的具体内容

… DEF AAA Coordinate{point […]} …

步骤2: 定义一个TimeSensor,确定变化周期及循环方式

DEF TS TimeSensor{…}

步骤3: 定义一个CoordinateInterpolator节点,给出坐标变化的具体方式

DEF CI CoordinateInterpolator {
key [ ….]
keyValue [ ….]
}

步骤4: 给出两个ROUTE语句:

一个将TimeSensor的变化传给CoordinateInterpolator
一个将CoordinateInterpolator的变化传给Coordinate

点击这里可运行书中P55页的EX6_02.WRL(不断变形的长方体)
点击这里可阅读书中P55页的EX6_02.WRL(不断变形的长方体)

点击这里可运行书中P55页的EX6_03.WRL(可变形的拉伸体,需要点击一下)

点击这里可阅读书中P55页的EX6_03.WRL(可变形的拉伸体,需要点击一下)

点击这里可运行书中P54页的EX6_04.WRL(跳动着的点和线)

点击这里可阅读书中P54页的EX6_04.WRL(跳动着的点和线)

3. 利用OrientationInterpolator动态改变观察方向,或这改变形体的方向

作用: 可用来动态改变Viewpoint节点的方向(ex5_02.wrl)
或用来动态改变形体的方向,使形体旋转(ex6_05.wrl)

步骤1: 给需要变化方向的Viewpoint节点命名,或者给需要旋转形体所在的Transform节点命名

DEF AAA Transform{…}
DEF AAA Viewpoint{…}

步骤2: 定义一个TimeSensor,确定变化周期及循环方式

DEF TS TimeSensor{…}

步骤3: 定义一个OrientationInterpolator节点,给出变化的具体方式

DEF OI orientationInterpolator {
key [ ….]
keyValue [ ….]
}

步骤4: 给出两个ROUTE语句:

一个将TimeSensor的变化传给OrientationInterpolator
一个将OrientationInterpolator的变化传给Transform或Viewpoint

点击这里可运行书中P44页的EX5_02.WRL(不断移动的圆柱)

点击这里可阅读书中P44页的EX5_02.WRL(不断移动的圆柱)

点击这里可运行书中P58页的EX6_05.WRL(三个转动形体)

点击这里可阅读书中P58页的EX6_05.WRL(三个转动形体)

4. 利用PositionInterpolator动态改变观察位置,或这改变形体的位置

作用:

可用来动态改变Viewpoint节点的位置(ex5_01.wrl)
或用来动态改变形体的位置,使形体动态移动(ex6_07.wrl)

怪异使用:可用来改变形体所在局部坐标系的scale字段(ex6_06)

步骤1:

给需要变化方向的Viewpoint节点命名
或者给需要动态移动形体所在的Transform节点命名

DEF AAA Transform{…}
DEF AAA Viewpoint{…}

步骤2: 定义一个TimeSensor,确定变化周期及循环方式

DEF TS TimeSensor{…}

步骤3: 定义一个PositionInterpolator节点,给出变化的具体方式

DEF PI PositionInterpolator {
key [ ….]
keyValue [ ….]
}

步骤4: 给出两个ROUTE语句:

一个将TimeSensor的变化传给PositionInterpolator
一个将PositionInterpolator的变化传给Transform或Viewpoint

5. 利用ScalarInterpolator动态改变透明程度、雾的影响范围

作用:

可用来动态改变Material节点的transparency字段,从而改变形体的透明效果(ex6_08.wrl)
或用来动态改变Fog节点visibilityRange字段,从而雾的影像范围(ex6_10.wrl)

步骤1: 给Material或Fog节点命名,Material通常是Appearance节点material字段的具体内容
DEF MMM Material{…}
DEF FFF Fog{…}

步骤2: 定义一个TimeSensor,确定变化周期及循环方式

DEF TS TimeSensor{…}

步骤3: 定义一个ScalarInterpolator节点,给出变化的具体方式

DEF SI ScalarInterpolator {
key [ ….]
keyValue [ ….]
}

步骤4:
给出两个ROUTE语句:

一个将TimeSensor的变化传给ScalarInterpolator
一个将ScalarInterpolator的变化传给Material的transparency字段,或Fog的visibilityRange字段

看到几个非常牛的Vrml作品

不得不感叹,老外太猛了,猛的惊叹的不敢出声,看看人家的Vrml,再看看自己的Vrml,没个玩喽.

两个强人的网站地址:
http://www.hersto.com/hersto.php?lay=2
http://www.treed.fr/Site/Home_en.html

以下是Vrml实例:

实时录入文本:http://www.hersto.com/VRML_Apps/TypeWriter
赛车游戏基础:http://www.hersto.com/VRML_Apps/FindTheWessel
材质编辑:http://www.hersto.com/VRML_Apps/MatEdit
雪花动画:http://www.hersto.com/VRML_Apps/ChStars

空中巴士:http://www.treed.fr/demos/airb_fam/airbus_families.html
疑似楼梯:http://www.treed.fr/demos/escalier/escalier.html  (我没有成功浏览!)
非常漂亮的室内:http://www.treed.fr/demos/housse/housse.html  (导航按钮非常喜欢)
沙发:http://www.treed.fr/demos/seats/Interf_seats.html
地球:http://www.treed.fr/demos/display_range/map_world.html
连连看:http://www.treed.fr/demos/mahjong/mahJong.html     (非常酷,Vrml能做成这样,神!)
模拟钟:http://www.treed.fr/demos/horloge/horloge.html
拼图:http://www.treed.fr/demos/push_push/push_push.html   (小时候买过实物,这个也酷!)
钻石戒子:http://www.construct3d.com/x3diamond/x3diamond.htm
幻灯片:http://www.hersto.com/Publications/3DPresentation

原型:
阻尼器:http://www.hersto.com/VRML/Dampers.php
滑块:http://www.hersto.com/VRML/Slider.php
箭头:http://www.hersto.com/VRML/Arrow.php
纹理文本:http://www.hersto.com/VRML/TextureText.php

Unity3D可执行文件打包工具

Unity3D只有Pro版支持编译输出Win平台下的可执行文件格式.

本工具可对Unity3D任意版本输出的Web3D(*.unity3d)文件进行处理打包,封装为可用在Windows平台下的可执行文件格式.

本工具实现了对Unity3D文件的Windows平台下的可执行文件封装.

可以定义窗口样式,可全屏,可窗口.

可定义窗口大小,窗口样式下任意尺寸窗口设置.

可以定义载入窗口背景颜色及边框颜色.

可以定义载入窗口Logo及进度条样式.(必须为Png格式.大小不限.)

欢迎大家使用后给我反馈建议和意见.

注:某些垃圾杀软可能对工具误杀,本工具保证无病毒.不会破坏和非法获取您的计算机数据.

点击下载此文件

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个。从为其提供老虎画的曹某家中提取了同时购买的另一幅相同的老虎画。”—曹某一般买年画会一对一的买??常人是这样买的吗?周正龙的个人水平不可能完成场面的造假与拍摄。难道另有隐情未被暴露?当然,这牵扯到了很多很多,一头的污水,只有默默的等着真相大白吧!