Common VFX workflows with CityEngine

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to the virtual azure booth here at siggraph 2020 i'm very happy that you joined me for a 20-minute session about city engine and how it is used in visual effects and post-production workflows i will spend 5 minutes to describe the mate 2 major workflows we are seeing within our customer base and then go hands-on on how you can create and export a city model from city engine to houdini using usd the universal scene description from pixar let's take a quick look at the city engine user interface to familiarize ourselves with the main elements and provide some context for the following on the upper left side you have the scene editor which manages all the layers and objects in a scene terrain street networks parcels building models on the lower left side is file navigator which manages all the files and assets referenced in the scene on the far right we have a standard object inspector and in the middle the viewport showing an urban planning scene all the content you see here was placed in the scene by applying our procedural modeling language cj on data provided by a gis database here is how that scene looks when exported to unreal engine the only work done in the unreal editor after importing was setting up the camera the sky and the lights we will revisit the scene in the second part of this talk where we go hands-on on exporting it to houdini using usd in general working with city engine is similar to other dcc applications you import you work with layers and objects and you export our layer types are special in a way that they are procedurally connected which for example means that the terrain drives the streets the streets in turn drive the blocks and the blocks in turn drive to buildings let's talk about the different workflows how to get the city models into a studio pipeline we basically see two patterns and a combination of them being employed what's common to both on the top here is how you deal with terrain and street networks the terrain is usually exported as quart meshes or grayscale elevation maps in some standard file format while you can export the raw street network graphs for example sdxf they are rarely exported directly most of the time users only want to export the derived 3d models on top of them for example as usd or alembic so this brings us to the actual export variants for the 3d models on the left side the first pattern is to write out instance information of assets into a json or xml file and then read that using custom pipeline scripts to assemble the scene in maya or katana or something similar this means that city engine does not really need to see the final quality assets users usually work with some lower level of detail to assemble the scene and see the engine and keep things nice and light the final scene or shot is built externally in the pipeline maybe even only in the renderer the second pattern is to write out the actual geometry iterated in ct engine this is useful because some geometry created by cd engine is hard to compose out of pre-modeled assets for example roof shapes or street surfaces this is usually geometry which depends on the street layout and the parcel shapes and the terrain and then there is of course the combination of the two approaches which can be neatly combined into a single export process by using our coexport python scripts this means you can attach a custom python script to write your custom instance information file with a standard alembic export and write out for example the roof geometry and the instance locations at once let's illustrate these workflows by looking at some work of our great user base so for example in zootopia disney used city engine to lay out the whole city you can see the different city designs and parts in the screenshot here of city engine you can see the raw streets and parcels on the terrain city engine provides you with tools to align parcels to the terrain and vice versa disney then used pre-modeled or they primal the collection of building assets for the different styles of the city here are some of the desert style buildings those were then distributed we then see the engine using the cga scripts by running the cj rules with different random seats disney was able to explore different combinations of buildings and then settle on the final layout so here are a few shots where you see the buildings in the background in bigquery 6 disney did a similar thing but in a more fine granular way they pre-modeled individual floors of buildings and then used cj to combine them semi-randomly to get a nice variety of buildings without obvious repetitions and so they were able to cover this huge area on the other side we have examples which use only the geometry directly from ctng here in man of steel double negative exported the joint tree as random and rip files and then processed them quite heavily for all the destruction simulations they needed finally we have the mixed workflow which is the most versatile one for example in guardians of the galaxy scanline first used city engine to lay out the streets and then use pre-model building assets which four level of detail to design the density of the city so for the hero part of the city they just used the lowest led basically boxes to design the density and then the pipeline replaced them with hero assets for the outer parts of the city they directly disputed the pre-model building shells with cga and exported them as instances for the rest of the geometry for example streets they directly exported the geometry out of cd engine and that's the final look in the movie so now it is time to switch gears and export this boston scene you saw at the beginning through usd into houdini this demonstration is based on a city planning project done by our colleagues and the virtual reality and arcgis urban product teams here at esri rnd zurich while we could obviously use the positional power of city engine and houdini to create some crazy sci-fi city we place our current demonstration on the border between urban planning and vfx this reflects what we see in our customer base many movie or game productions actually start with real-world data these days the project is about redeveloping dorchester avenue in south boston the basic idea was to improve workability public transport and add more green spaces inspired by this we took the raw gis data provided by the urban planning department of the city of boston and enhanced it with the city engine with our own building designs and then exported it to the unreal engine i would like to use this example and show you how to create and bring such an urban scene into houdini's solaris by using our new usd exporter in city engine 2020 we start the city engine scene by importing the raw gis data provided by the boston urban planning department to have a correctly geo-referenced scene in case you want to align more data later on in this case we start with large polygons which give us the boundaries for ground water and greenery these are just for reference they will not be part of the final scene there are many approaches to set up a city layout with cdng in this case we will use satellite imagery to trace some streets around dorchester avenue in boston and use the resulting parcels to apply our building designs written in cd engine's procedural language cga for this cdnh provides a handy feature called get map data it will take the current location of the scene on the world and query an azure cloud surveys which will provide elevation and satellite images by providing an extent the cloud service will generate the corresponding images and see the engine will download and import them into the scene as a map layer type you can adjust the resolutions for the image and dilation map individually the resulting layer contains a satellite image draped over a quad mesh with the elevation boston is relatively flat so the elevation is a bit hard to see here now it is time to do a first export to ust and set up the houdini scene we select the new terra layer and choose the model export with the usd format the usb exporter does not have many options by design as the format is quite flexible and we implemented a broadly usable default behavior the most important option for tier reference scenes is the global offset here we will center the exported geometry around the origin to prevent precision issues in houdini it is useful to round the offset to the nearest integer and reuse the same offset in future exports so that everything aligns within houdini by default the usb exporter will write a number of usd files with a fixed structure into the model directory of the city engine project we structure the export by city engine layers and assets and tied all together with a lightweight top-level usd file instanced assets will end up in separate usd files for maximum flexibility in consuming applications let's load the usd file into a new houdini scene we use the reference lop in solaris mode to read our exported terrain we browse to the models directory of the city engine project and select the top level usd file which references in turn the actual geometry created by ctng this allows us to set up two cameras one for the birthday view and one for the area of interest which we will define later in case you are wondering how hidiny found the satellite texture we make use of the built-in usd preview surface material i will explain this in detail after we finished creating the streets and building models finally we merge everything together and pipe it through the karma render settings the latter we will use at the end for the final rendering now that we have some theme content let's set up karma and add some basic lighting there are different ways to create street layouts in cd engine one starting point is to take a look at tutorial 4 which explains how streets can be imported from various data sources here i'm going to take a different route and manually trace some streets on the satellite image this is useful as the number of streets is rather small on larger scenes it is of course more useful to import the streets but depending on the data source this might need some data massaging to match the attributes like street and sidewalk widths unfortunately there are many different standards how cities around the world store such data so by placing the camera into ortho mode and press the y key to look directly from above we can draw the streets on top of the satellite image city engine will choose some default values for the street and sidewalk widths which can be edited later on as only the crossing points are aligned to the terrain this might result in terrain intersection with the street this can be fixed by adding more street notes and align them with the terrain street nodes and edges can be freely edited and the derived polygons for street surface sidewalks and blocks will update accordingly there are special tools to add a street and sidewalk widths now that we have the basic three shapes in place let's make them more interesting by generating actual geometry to save time we can make use of the complete streets rule which is kindly provided for free by our community member david wasserman it is available on github the streets polygons are set up by default with the necessary start rules for street sidewalk and crossing shapes this means david's rule will work out of the box and we can just drag and drop the rule file onto the shapes david's rules come with a large number of parameters for example to enable parking spots or adding bus stops you can also control the density of vehicles on the street we can use the selection utilities to apply the rules for the different shape types at once these tools are also handy for other bulk changes like switching to a different rule file all together so let's select all the shapes the same set of start rules and apply the rule in bulk the underlying street graph edges and notes remain editable and all derived geo entry will adapt to changes if we move for example a crossing node the related geometry of the current dynamic street layer and its connected street rule will adapt and regenerate so finally we end up with some street views with cars trees all generated by david's complete street room before we can continue with the buildings we need to set up the parcels where the buildings sit upon one approach is to refine the blocks which are automatically derived from the streets in this example we make use of the built-in block subdivision schemes city engine has three hard-coded subdivision schemes the recursive the offset and the skeleton subdivision alternatively we can also use cj rules to subdivide the blocks into parcels for example there is the cj operation called split area which will create perpendicular cuts along a specified direction to realize a given range of parcel sizes of course it is also possible to import or draw parcels directly including attributes to control the building generation we can always come back and adjust the subdivision of the blocks even after creating the buildings for example to change the density of certain area now we come to one of the main features of cd engine which is the creation of procedural buildings based on the layers we previously created as mentioned in the introduction we will leverage the set of rules written by our vr team for the boston planning project the rule is modular in the sense that we can freely combine different envelopes volumes and facades and green spaces over different land use types the rule can also create landscapes parks and even interiors let's continue in city engine by applying the rule on a parcel we first start with a high-rise building the macy tower it is a fully procedural circular design which can be freely adjusted in width and height let's add another rule for a more generic building design certain building aspects are driven by random values so we can regenerate with different random seeds to explore the look there are many more parameters available for example to switch the level of detail on the vegetation models it is time to export streets and buildings to houdini we use the same process as before we select parts of the scene either in the layer list on the left or directly in the viewport then we call up the usd model exporter again we again provide a base name and reuse the same global offset settings as with the terrain so everything will line up in houdini you might have noticed that we've selected some empty parcels if these parcels have any rules assigned the exporter will create the building geometry if it has not yet been created in the cd engine viewport this is a neat trick to export large scenes without overloading your gpu or system memory let's add the buildings to the houdini scene we use another reference lop for that and merge it with the rest we again select the top level file of our just exported buildings and streets let's disable the terrain team of temporarily and give houdini some time to load the building geometry note that you have the full freedom over the granularity of the exports you could choose to export everything in one go from city engine or layer by layer thanks to usd compositing the resulting scene graph in houdini will be the same let's also quickly try out switching to karma transporting materials and shading networks across applications is still challenging there is often a mismatch in attribute semantics or problems with duplicate materials and so on luckily with roughness metallic pbr materials in cd engine and a matching pbr material definition provided by usd this program has been solved at least for this workflow here city engine supports two material definitions within the procedural modeling language our default legacy material and the now standard pbr material if the ppr material is set in the rules city engine will add a usd preview surface shader to each exploded usd object this leads to a seamless experience in houdini all geometry looks correctly in the houdini open shell viewport as well as in the karma ray tracer you can inspect the materials by selecting part of a building and navigating to the material usb primitive in the scene graph also by adding a lop material library you can define your own usd previous surfaces or other materials and override parts of the city engine model by using the usd techniques like primitive collections let's conclude this demonstration by exporting the full scene with some additional surrounding buildings from the boston gis database the additional buildings are just static meshes without any materials this time we export everything at once and bring it into houdini again it does not matter if you choose to export city engine layers individually or everything at once you will have the same level of control in houdini this export contains about 50 million polygons and loads fairly quickly in the open shell viewport if more advanced performance control is necessary you can easily explore the city engine scene twice once through the low and once with a high lod and use some locks or tops to switch between the two finally we can switch over to the karma renderer and explore the scene in a bit more detail note how we can still quickly hide certain buildings and so also in the karma mode finally here are some longer comma renders of the scene this concludes my presentation here at the virtual esri booth at siggraph 2020 about ct engine vfx workflows do not hesitate to visit our booth and chat system to ask any questions thanks and see you next time you
Info
Channel: CityEngineTV
Views: 814
Rating: 4.826087 out of 5
Keywords: CityEngine GIS Modeling 3D, CityEngine, Tutorial, 3D, Smart 3D City Models, Esri, Modeling, Essential Skills, GIS, Smart 3D City, 3D City
Id: 83CMxMKYoWc
Channel Id: undefined
Length: 21min 48sec (1308 seconds)
Published: Fri Aug 28 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.