地址:http://pan.baidu.com/share/link?shareid=3871210059&uk=3492170216
密码:am5b 在今年Esri全球用户大会和Esri中国用户大会的主体大会上都能看到动态水在Web端的身影,如下面这幅图就是Esri中国用户大会上展示的高铁中的动态水效果:

像上面这幅动态水的效果只需要修改图层的名字或者一句简单的规则如下:

WaterWave2-->
set(material.name,"water__waterparams_30_50")
X.

然后将该规则赋给矢量的面片就可以得到上面的效果。那么这其中又有什么样的区别呢?其中的制作流程又是怎样的呢?下面将从动态水制作、场景导出和发布两个方面来做一下阐述。

动态水制作

通过修改图层(要素)名字制作动态水

下面的字符串能够在Web查看器中触发动态水效果的显示:

1.    <something>__water<something>(默认水波参数,流速为:10,波浪高点与低点的差为:7)

2.    <something>__waterquiet<something>(较慢的流速:5,较小的波浪:2)

3.    <something>__waterstormy<something> (较快的流速:30,较大的波浪:15)

说明:此部分指当图层或形状(要素)的名字满足“*__water*”时,在导出成WebSecene时就会渲染为动态水的效果。其中图层的名字满足这种形式时,该图层下的所有对象都会被渲染成动态水的效果,当形状(要素)的名字满足这种形式时只有该形状会在web端渲染出动态水的效果。其中的连接符为英文状态下的双下划杠“__”。

通过规则制作动态水(流速/波浪可调整)

在默认流速的情况下操作相对比较简单,我们只需要更改图层或要素的名字就可以触发动态水的显示效果。如果需要自定义水流的速度、波浪的大小就需要编写规则。直接通过定义材质的名称就可以了,形式如下:

set(material.name,<something>__waterparams__<wavesize>__ <wavespeed>)

参数说明:

1.    <something>__waterparams__<wavesize>__<wavespeed>是一段字符串;

2.    <something>是任意字符,<wavesize>是数值型参数(浮点型和整形都可以)指波浪高点与低点的差,<wavespeed>是数值型指流速;

3.    中间的连接符为为英文状态下的双下划杠“__”。

示例代码如下:

WaterWave2-->
set(material.name,"water__waterparams_30_50")
X.

场景导出

1.    选择要导出的模型/形状;

2.    通过菜单File → Export Models...打开Choose format formodel export窗口,并在此窗口中选择CityEngine Web Scene并点击下一步如下图:

3.    在弹出的窗口中选择默认并下一步;

4.    在弹出窗口中点击finish即完成场景的导出。

导出完成后,在文件导航窗口刷新工程下的models文件夹就会看到新生成的场景文件。

场景预览和发布

在文件导航窗口右键选择并选择3D WebScene Viewer/(offline)就可以进行预览。

预览会发现并不会出现动态水的效果,这是因为CityEngine2012自带的Web Viewer里面并不支持动态水的效果(CityEngine 2013会支持),在这里给大家准备了最新的webviewer。只需要要把原文件夹中的工作空间下的“…/ce.lib/webviewer”文件夹及里面的内容删掉,把新webviewer文件夹拷到相应的目录即可实现在CityEngine中的预览。

如果需要把web scene部署到自己的IIS端,可以参考博文《CityEngine Web Scene如何在IIS下部署》,同样需要用新webviewer替换原有的webviewer。

另外在arcgis online有很多资源(http://www.arcgis.com/features/),可以帮助我了解国外的朋友是如何利用CityEngine建模、如何利用CityEngine解决实际问题的(如:波特兰市城市污染物分析等)。推荐online的几个组,里面有很多很好的web scene场景:

1.CityEngine UserGenerated Web Scenes :http://www.arcgis.com/home/group.html?owner=CityEngine&title=CityEngine%20User%20Generated%20Web%20Scenes

2.CityEngine WebScenes:http://www.arcgis.com/home/group.html?owner=CityEngine&title=CityEngine%20Web%20Scenes

3.3D GIS CityModel-featured Web Scenes:http://www.arcgis.com/home/group.html?owner=cybercity3dinc&title=3D%20GIS%20City%20Model-featured%20Web%20Scenes

如果你有比较有创意/漂亮的作品想与国外的同行进行分享,只需要注册个online帐号就可以发布了。

此外如果想在组织内部对我们成果做共享,portal for ArcGIS也是一个不错的选择。想要了解相关内容请关注ArcGIS产品与技术专栏——云计算

CityEngine中动态水的实现的更多相关文章

  1. 用drawRect以及CAReplicatorLayer绘制动态水波纹

    用drawRect以及CAReplicatorLayer绘制动态水波纹 大大简化了写水波纹效果的难度,你可以根据示例自己组装水波纹效果,本设计是几个工具组合在一起完成的效果, DrawRectObje ...

  2. 第三章Struts2 Action中动态方法调用、通配符的使用

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  3. Struts2中动态方法的调用

    Struts2中动态方法调用就是为了解决一个action对应多个请求的处理,以免action太多. 主要有一下三种方法:指定method属性.感叹号方式和通配符方式.推荐使用第三种方式. 1.指定me ...

  4. UE4 中在 Actor 中动态 Create Component 与ChildActor 的 小笔记

    Note:旧版本的UE4 的Attach 和12.13版本有些不一样 创建Component: UCpp_MyComponent* temp_imageCom = NewObject<UCpp_ ...

  5. Android中动态更新ListView(转)

    在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...

  6. 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定

    最近在做今日头条WP的过程中,遇到需要动态生成Pivot项的问题.第一个版本是把几个频道写死在xaml里了,事件绑定也写在xaml里,每个频道绑定一个ObservableCollection<A ...

  7. Struts2 Action中动态方法调用、通配符的使用

    一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...

  8. oracle过程中动态语句实现

    oracle过程中动态语句实现 一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DD ...

  9. Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

    Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://b ...

随机推荐

  1. Flex帮助文档ASDoc

    首先,我们一般会对类文件的类和成员以及成员函数做一些解析性说明.那么这个解析性说明应该怎么写呢?如果想给指定的类.成员属性.成员函数加上注释,可以在这些声明的顶部按照下面的格式属性注释: (在flas ...

  2. UUID生成

    >>>Arch Linux # uuidgen From: http://os.51cto.com/art/200709/56613.htm >>>Debian j ...

  3. Discuz开源论坛本地部署自动生成数据库

    这个版本可能比较有点老,但是万变不离其宗,再新的版本都是在已有的基础上更新的,所以掌握方法是最重要的! 先上几张安装成功后的图 (安装成功的论坛首页) (后台管理登录页) 下面说一下安装步骤 第一步: ...

  4. Device Path in WinPrefetchView

    As we know that the Prefetch file is used for optimizing the loading time of the application in the ...

  5. php加密解密0x数组

    <?php //加密字符串 $str='hello world'; $arr=str_split($str); $arr1=array(); foreach($arr as $v){ $ordv ...

  6. 如何防止ElasticSearch集群出现脑裂现象(转)

    原文:http://xingxiudong.com/2015/01/05/resolve-elasticsearch-split-brain/ 什么是“脑裂”现象? 由于某些节点的失效,部分节点的网络 ...

  7. 32、shiro框架入门3.授权

    一. 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission ...

  8. TJI读书笔记07-初始化

    TJI读书笔记07-初始化 成员初始化 构造方法初始化 初始化块 初始化的顺序 成员初始化 java尽量去保证每个变量在使用前都会得到初始化. 对于方法局部变量,java不会自动初始化他们,如果没有显 ...

  9. VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的

    消息作用:    在进程间共享数据(内部通过创建内存映射文件) 消息介绍:需要用到的数据结构/类型:typedef struct tagCOPYDATASTRUCT {    ULONG_PTR dw ...

  10. js 构造函数

    //构造函数  //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法  //当对象被实例化后,构造函数会立即执行它所包含的任何代码  function myObject(ms ...