Animating building height

Hi there. Is it possible to animate the height of buildings imported using Blank 3D Tiles Tileset?

I wanted to animate the buildings growing in Z. Any help appreciated.

Hi @sudev,

Do you have any images or videos that explain the effect you want? It would help us understand your vision.

You could probably exaggerate the height of the buildings in a vertex shader, but you’ll need to be careful about the direction of “Z”, because the direction of “up” will change depending on where you are on Earth. But if your application will stay in one area, this shouldn’t be a big deal.

Hey Janine, I am trying to achieve something like this

Basically, selecting specific buildings based on a property attribute and animating their Z heights. I have got the selection part already sorted. Just trying to get some sense on how to change positions of vertices or maybe even scaling the Z would help?

Hi sudev,

So, your buildings are part of the 3D Tile?

I’m doing something similar - but I just use the 3D Tiles for the surrounding terrain (and, in my case other buildings that I’m not interested in). And then I mask out the piece of the 3D Tile and place UE models of the buildings into the scene (with a geo anchor). Then it’s trivial to manipulate the buildings as they’re separate actors.

Would that work? Or do you have to have the buildings imported as 3D Tiles?

Yeah, I have those buildings imported as 3D tiles. I am kinda doing a data visualization piece using it. Can you tell me more about what you mean by UE models of buildings please. Like are they accurate to real world gis data? Not the visuals but the placement and stuff?

So, I’m working with a small subset of “known buildings”. E.g. all the buildings for a hospital, university or airport. I have a 3D model for each building and I know the location of each building. I import the individual models into UE and then I use the GIS coords and rotation information along with Cesium to place the buildings. To place the buildings I need the UE coords that match the GIS coords - and there’s a Cesium function called something like “convert GIS coords to UE coords”.

This works for me because it’s a handful of buildings and I know the GIS coords for them. I’m not working with a whole city full of buildings from an open-source 3D tile set - but if working with a bigger set of buildings you could (a) automate the task of spawning buildings by reading the GIS coords from your data set or (b) depending on your use case you could combine many buildings together into a “neighborhood” and then work on that set.

Just some alternative approaches to think about.

Thanks for the explaination @jdh2550. Though not sure if I wanna complicate things with the stuff already working fine with the default 3d tiles.

@janine I tried changing WorldPositionOffset in the material node for FeaturesMetadata. Even though preview shows the correct transformation, I do not see it on the buildings. Pretty sure am missing something. Any tips?

material_nodes-ezgif.com-optimize

1 Like

Hi @sudev,

Does changing the scale of the value you put into World Position Offset make a difference? A scale of 1 will probably seem invisible, especially since Unreal units are centimeters (while Cesium works in meters).

(Also, thanks for your suggestion @jdh2550!)

Hi @janine, not really. It didn’t work for me. Even setting a ridiculous number like 1000 doesn’t affect the models.

Hi @sudev, sorry that I dropped the ball on this one.

I investigated this and realized that the default blend asset we use does not handle World Position Offset. So you will have to modify or create a new blend asset, and manually set how it outputs the World Position Offset, like so:

Sorry again for the delay, I hope that helps!