My question is how to do so, i don’t know focal lenght of picture (even if from a game), i don’t know the real world dimensions of these structures (there’s none online), and i don’t really even know where to begin with. The only information i was able to retrieve is the X and Y dimensions of the building in the picture via Google Earth. Even so there’s still a big issue: distances.
To begin with i put a camera at 1.75 meters from the ground and loaded this picture, measure the distance between camera and building but as i started replicating it in blender nothing was right.
I would really appreciate if you could explain me step by step how you would recreate such environment in soort of a “clean” way.
Welcome …
you might tell what you already can do in any 3D application… so it’s mainly collecting a lot of reference data and also images about this and then… :
Model it
Well… at first i might be better to build something simple… like for example some game asset… maybe soem chest or cubicle… but this already depends on what you already know.
i have already done similar scenes, just not by following a reference or real world dimensions. This is my biggest concern, so you’re saying i should model the main objects first then put them into the scene, tweak a bit their position etc so they match the image and then add details?
Welcome! It is indeed possible to use a satellite image or an image taken from an airplane as a reference, I have modeled real life landscapes by using a map with a correct scale as a reference image. And getting lots of references from different angles is also good, and looking for archirectural information etc. The focal length in the picture seems to be quite low because there is clearly some distortion near the edges, my guess would be somewhere around 25mm. You can get a rough idea about the scale of the structures by looking for things that you can find a correct scale for, like the door in the terrace, stairs, a car tire and a barrel. Standard door height is 2,1m, standard stair step is about 18cm, car tires maybe something like 60-70cm, barrel width about 60cm. It’s definitely a bit hard to guess the camera height especially from game footage, but it will be easier if you get the rough dimensions for the scene from a satellite image. I can also try doing the dimensions at the end of the week when I have more time.
download lidar point cloud data (it’s free from many places), use geo nodes to set a normalised (0 (lowest point) to 1 (highest point) colour attribute of each point based on the z location, export the values as a 16bit tiff (your image resolution should match the point x and y resolution so that you get one pixel per point), use that as a displacement map in a mesh’s material node tree, then use adaptive subdivision to ensure it’s subdivision is calculated visually based on pixels, for faster rendering. Use a second lower poly hidden mesh that’s actually subdivided to scatter plants and buildings on. The lidar data usually contains the actual elevation values. You can set the height of both meshes by multiplying the displacement value by the (max elevation - lowest elevation).
The lidar providers often have satellite imagery that can be used as the material base colour for the landscape, it doesn’t have to be perfect as it’s usually going to be covered by geometry. The base colour can also be used to drive the colour of the scattered trees and grass from within their shaders.
When you’re also working from a 2d photo as you are here, I would also use fspy (free) to set up the blender 3d camera settings, so that you can model and place elements in camera view for more accuracy, especially in areas that aren’t present in the point cloud due to being occluded (such as under the bridge). This is also useful if you only need one camera angle, because you can often get away with keeping most of the original image and compositing your 3d elements over it.
You can use fspy to extract camera information from images.
In order to match the camera’s information with actual spatial information in Fspy, we need one reference dimension. Maybe the column height is the information you can easily find.
However, if you need information about the building in the image, the deviation will be severe.
And depending on the location of the reference dimension, the error can be severe.
The reference dimension position will be the center of the 3D space.
To measure the size of a building on a satellite map, it would be similar to looking at a map. You can look at the scale ratio of the satellite map.
The map form will be based on the official records in which the building is registered.
However, depending on the registration period, the changes may not be beneficial.
You can also import that information to your blender through Addon.
Collect data so you know what measure and scale you need and where to place what… a mockup might help to “realize” what parts might be wrong or about what to re-search.
Re-building after one single image might possible with a very good image with the main perspective you want that building in your scene or if you want to build only something “inspired by”.
In general:
If one has “experienced” certain object (especially in real life) then one can “read” a lot out of images because one “knows” this object (or s imilar one) in real live.
If this is not the case than even some scan,lidar, gaussian splatter, whatever data will not help to model this… (expect when “only” including this data in some scene with some crazy amount of hardware).
So you might even walk arround your locale school or some other public building to experience it with another point of view; always thinking “how would i model this” and/or “this would be not needed in model”… and also “this is for what it is for”. ( For example: there are some smaller windows at some certain location because that’s where the toilets are. And this “repeats” in the next floor. Or some bigger glassarea because thats the staircases, the entry hall etc. … )
The human eye/brain can do a lot of things when there is something to compare with… exact measures for some things scan help … especially if there is no acces to the original plans.
Well, using FSPY as @oo_1942 suggested could be a good starting point if you want to be very close to the original model.
Then it depends on what you want to acheive : if you need to be super accurate for like foresentic purpose it’s one thing.
If your goal is to reproduce the image more for artistic purpose and study, I suggest that you take your own spin on the subject. The end result might not be as good as your reference but you’ll progress much more by trying to understand the artistic decision that makes the subject looks good rather than just bruteforce copying it !
On top of that, it’s very likely that the author took some liberties and what they do isn’t a 100% match of reality.
Well i used FSPY in the last hour (waiting for breakfast) and only as a rough version… not even using all the tips from the video (which was also mentioned some time ago in the tutorial section if i remember correctly…)
Again: only a rough one… the tutorial shows a lot of info…
Also: might be not the best image to use… AFAIK one can not “merge” two different images and positions “automatically”… one may try to use only a cube for reference and then position a second ( third…) camera acording to the first one… IDK…
Or use some satelite image as ref for positioning all this…
The curvy “bridge” is a bit challenging… maybe there is some slant in the environmen and/or the bridge itself… “mine” are “growing” when comming nearer to the camera. This might be the perspective problem task to solve when using such focal length… as @keihaankarkinen mentioned… this seems to <15mm and also has a Image/Sensor proportion missmatchbut i only used it as rough guide…
Also we cannot know if the camera that was used to render this had some shift added… I know it’s a technique often used when photographing buildings. That would change the distortion drastically. I don’t know if fspy can take that into account, I have never used it. Also it’s not clear is the ground flat or does it have some uphill. But the camera seems to be on the level of the background building terrace/deck, as it seems just like a straight line despite the corner, so there is not much room for any uphill…
Fspy does not automatically recognize images from different viewpoints. However, if images with the same reference point are processed by Fspy and imported into the blender, the viewpoints of the two cameras can match.
But this is not a perfect match. Close to approximation
Oh… i meant: manually using two images (best if made the same camera) od an object and do the positioning of the two imported cameras according to some base / reference model one did put already into the scene…
For automatically alignment of cameras one may use something like AliceVision:
maybe… i’m not sure… just tried this twice… with some unsatiedfiing results (it worked in general but i had not enough images and in bad quality ).
Ok, after trial and error I managed to recreate the environment pretty well by just eyeballing it, using any clues visible in the picture. According to this, the camera is on 1,8m height with 12,7mm focal length, 56 meters from the closest corner of the building. The roof of the building at the area of the texts is 19,1m, the terrace is on 1,8m height. The pillars are 6,48m high, 2,42m wide and 0,96m thick.
I did it like this: First I put the picture into the camera as a background image set to fit. I mentioned that the camera seems to be on the terrace level, so I counted the stairs in the picture. There are ten steps, and assuming they are standardish 18cm, I placed the camera on 1,8 height. Then I set the focal length to something I would guess it could be, but it was not so important yet at this point. I added a cube 2,1m high and moved it away from the camera also on a 1,8m height until it was the same size as the door in the terrace shadows, and rotated the camera to match the cube. Then I duplicated the cube and scaled it on z axis until it hit the roof level to get the height of the building. After that I scaled the cube on x and y axis to make it more the size of the building, rotated the camera so that the corner of the building was aligned with the background image, and then adjusted the focal length so that the corner was of equal height with the reference. Then I placed the 3d cursor in the corner and used it as the pivot point to rotate the camera around the corner until both walls were on equal distance. If they were not narrowing steep enough, it meant that the camera was too far away from the building. If they were narrowing too steeply, it meant that the camera was too close. Then I moved the building a few meters on x and y axis to the right direction and repeated the process until the perspective matched the reference image. After that I made a barrel and a tire with 60cm diameter and moved them to match the image on the right side below the bridge, added a pillar behind the barrel, used the closest corner as the reference point, rotated it around the 3d cursor placed to the corner until the perspective matched, then scaled the walls and height to fit the picture. For the bridge I used a circle that I placed correctly with similar techniques.
The camera is at around 1.7/8 meters above the ground, as this is a screenshot taken from the game “S.T.A.L.K.E.R. 2: Heart of Chornobyl”, i don’t know about the shifting technique but being a game i assume it was not used.