地址: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. python中利用logging包进行日志记录时的logging.level设置选择

    之前在用python自带的logging包进行日志输出的时候发现有些logging语句没有输出,感到比较奇怪就去查了一下logging文档.然后发现其在设置和引用时的logging level会影响最 ...

  2. 剑指Offer:面试题22——栈的压入,弹出序列(java实现)

    题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  3. C#(Winform) Http 发送数据

    Get方式 private string HttpGet(string url, string postData) { HttpWebRequest request = (HttpWebRequest ...

  4. 第五百八十六天至第六百零五天 how ccan I 坚持

    考研中,勿扰... 我是个逗比,哈哈. 时间不够用了呢,哎.

  5. sqlserver 加内置dll的使用内存

  6. android开源框架android-async-http使用

    原文地址:http://www.open-open.com/lib/view/open1369637365753.html android-async-http开源框架可以是我们轻松的获取网络数据或者 ...

  7. flex中通过sprite在地图上画柱状图主要代码

    1.主要代码: var sprite:Sprite = new Sprite();     var columnSys:ColumnSymbol = new ColumnSymbol();     v ...

  8. Allegro转换PADS终极篇(转载)

    Allegro转换PADS终极篇.....http://www.eda365.com/forum.php?mod=viewthread&tid=86947&fromuid=190625 ...

  9. 【项目】搜索广告CTR预估(一)

    本文介绍CTR相关基础知识. 一.广告投放系统 广告系统包含多个子系统.除了上图所示的广告投放系统外,还包含商业系统(广告库的获得),统计系统(点击展示日志的获得)等. 广告投放系统主要是面向用户的, ...

  10. 动态ViewPager导航页面

    今天新学知识总计,个人信息,仅供参考: item设置: viewpager页面设置: <?xml version="1.0" encoding="utf-8&quo ...