Just Like the Movies: Thoughts on 3D Reconstruction Animation

Over the last few months in the National Museum of Archaeology, Valletta, Malta, there has been an exhibition of the FRAGSUS project (https://www.qub.ac.uk/sites/FRAGSUS/). This has been an exceptional project I have been working on over the years, and as part of the exhibition I got to display some of the 3D reconstructions I have made of Maltese structures, mainly the Ghajnsielem Road house and the Xaghra Circle.

The models I made were displayed as fly-through animations, which I made using the V-ray plugin for Sketchup. Looking back at the videos I made, I noticed that I was mainly using three types of shots:


The pan
Webp.net-gifmaker (1).gif
The zoom
Webp.net-gifmaker (2).gif
The Rotation

These are fairly typical shots which can be found in many museum exhibitions and online (Sanders and Sanders 1998; Hixon et al. 2000). It is also reminiscent of online viewers such as Sketchfab.

Now, I am a big movie fan. I am currently going through the 1001 Movies to Watch Before You Die list and I am really enjoying studying the cinematography of some of the films. The way lighting is set up, or the tinting of the scene and the movement of the camera, are all elements that for me make a good film and provide an intense entertainment experience.

Lighting from The Night of the Hunter (1955)
Camera placement from The Grand Budapest Hotel (2014)
A dolly shot from Jaws (1975)

The aim of film and of 3D reconstruction animation is very similar: they are both presenting some kind of narrative to the public. The way films portray narrative and create aesthetically pleasing experiences is by using tools that could easily be imported into 3D reconstructions. So why not create more cinematic renders of 3D models for archaeological exhibitions?

Here is a new render of the site:


The shot is done with high coloration, camera blur, faster shots and forced depth of field. I took inspiration from these Wes Anderson shots:

The use of less conventional rendering techniques can impact knowledge retention in the user. The perceived “warmness” of the cinematic experience increases the feeling of immersion, which can lead to increased learning (Favro 2012). Although the images are hyperrealistic, they will be familiar to the viewers as they belong to a medium that is commonly used.

On the subject of accuracy, it is important to note that the realer the images seem, the more they may be mistaken for “absolute truth” (Eiteljorg 1995, 1998, 2000; Miller and Richards 1995; Gershon 1998 and many others).  This is an inherent issue in all 3D reconstructions, but that I would argue is a deeper problem for all of archaeology: the very museum displays in which the 3D reconstructions are presented often follow a single narrative, while ignoring evidence against it or alternative theories. While it is therefore vital to ensure the correct information is accessible by the end user, it would be impossible to convey the complexity of a 3D reconstruction in a museum setting.

As a wider argument for 3D reconstruction as presentation, I would propose that the finished render should have the liberty to display freely aesthetically pleasing imagery, even to the loss of accuracy. This is possible so long as the model is verified through careful research that is accessible and (when possible) peer reviewed. This would ensure a level of quality in the final render that takes into account inaccuracies but doesn’t limit the user enjoyment.

A much longer discussion on the accuracy in 3D reconstruction is the subject of my current PhD Thesis, but I would suggest reading Sifniotis, M. (2012), which proposes a scientific method of dealing with inaccuracies.

In conclusion, 3D reconstruction animation doesn’t have to be boring or “cold”. Rendering of 3D models can learn a lot from films when it comes to presenting to the general public. By creating aesthetically pleasing content, user enjoyment and learning become the priority.


Eiteljorg, H. (1995). Virtual Reality and Rendering. CSA Newsletter Vol.7 No.4.
Eiteljorg, H. (1998). Photorealistic Visualizations May Be Too Good. CSA Newsletter Vol. 11 No.2.
Eiteljorg, H. (2000). The Compelling Computer Image – a double-edged sword. Internet Archaeology 8.
Favro, D. (2012). Se non é vero, é ben trovato (If Not True, It Is Well Conceived) Digital Immersive Reconstructions of Historical Environments. Journal of the Society of Architectural Historians Vo.71 No.3 pp.273-277.
Gershon, N. (1998). Visualization of an Imperfect World. IEEE Computer Graphics and Applications pp.43-45.
Hixon, C., Richardson, P. and Spurling, A. (2000). 3D Visualizations of a First-Century Galilean Town. In: Barceló, J. A., Forte, M. and Sanders, D. H. Virtual Reality in Archaeology pp.195-204.
Miller, P. and Richards, J. (1995). The Good, the Bad, and the Downright Misleading: Archaeological Adoption of Computer Visualisation. In: Huggett, J. and Ryan, N. Computer Applications and Quantitative Methods in Archaeology. Oxford: Tempus Reparatum pp.19-22.
Sanders, J. and Sanders, P. (1998). Constructing the Giza Plateau computer model. Available: https://oi.uchicago.edu/research/projects/constructing-giza-plateau-computer-model-1990-1995. Last accessed 23rd Oct 2017.
Sifniotis, M. (2012). Representing Archaeological Uncertainty in Cultural Informatics. PhD Thesis.



How Video Games help present and interpret Neolithic Malta.


Hi all,

I gave a talk yesterday as part of Queen’s University Belfast PGR Talks. I had it recorded as I thought it would be interesting to share here some of my recent results.

I intended this presentation for those who may not be familiar with the topic, so it may be a bit vague at times, but it should provide a useful introduction to 3D reconstruction and gaming software.

Please feel free to share your thoughts and questions in the comment section.


Interpreting and Presenting Archaeological Sites Using 3D Reconstruction: Virtual Exploration of the Xaghra Brochtorff Circle in Gozo.

Unity 1.jpeg

Hi all,

Just as a heads up, I have uploaded my MPhil dissertation to Academia.edu, so go and check it out.

It’s available here.

It discusses 3D reconstruction in the Maltese islands, as well as using gaming software to analyse archaeological sites.

Feel free to comment here with any questions you may have. I’m hoping to increase communication on this platform this year!



Paper on Using Unity3D for Archaeological Interpretation

image paper.jpeg

Just a quick note to say that I have published an article for Archaeological Science: Reports regarding the use of a Unity3D script to calculate solar alignment at Ggantija, Gozo.

It is unfortunately not as open access as I would like, but I’ve been told that the article will be available for viewing for the next 50 days at https://authors.elsevier.com/a/1WFZO,rVDBK0IJ

If you have an interest in using 3D Reconstruction for analysis do check it out, and feel free to get in contact at rbarratt01@qub.ac.uk for more information.


A Unity 3D script for displaying uncertainty in 3D Reconstructions.

Following up from my latest post, I wanted to share with you one of the solutions I used as part of my MPhil project.

As discussed, a real problem with 3D Reconstruction in archaeology is the subjectivity of the modelling process. While Photogrammetry and Laser Scanning record archaeological features as they are, reconstructions rely on information that is more or less inaccurate. Strothotte et al. (1999) pointed out that uncertainty in Visualisation is caused by imprecision and incompleteness. Site reports tend to present a limited range of data, usually in a 2D format that may not translate to 3D which causes imprecision (Worthing and Counsell 1999). And while interpretation of a site can be built on incomplete information, 3D Reconstruction requires answers to very specific questions that rarely can be answered by the archaeological evidence.

In a bid to display this uncertainty, projects have displayed the model entirely using wireframes or point clouds (Richards 1998). I propose a similar solution: by using a Unity 3D script heavily based on work by Naojitaniguchi (2015), we have different toggles to switch between fully rendered, wireframe and removed. The most uncertain elements are tagged for removal, leaving the more accurate features intact.

Within the scene, the wireframe looks like so:


Wireframe 2Wireframe

The Player script initiates the script by attaching it to the objects targeted for removal upon the input of a button:

void RemoveArchaeology(){
		if (Input.GetAxisRaw ("Remove") != 0 && archaeologyRemoved == 0 &&
			removeAxisInUse == false) {
			archaeologyRemoved = 1;
			removeAxisInUse = true;

			foreach (GameObject go in gameObjectArray) {

				go.gameObject.AddComponent ();
		} else if (Input.GetAxisRaw ("Remove") != 0 && archaeologyRemoved == 1 &&
			removeAxisInUse == false) {
			archaeologyRemoved = 2;
			removeAxisInUse = true;

			foreach (GameObject go in gameObjectArray) {

				VertexRenderer vertexRenderer = go.GetComponent ();
				vertexRenderer.RevertToStart ();
				Destroy (vertexRenderer);
				go.SetActive (false);
		}	else if (Input.GetAxisRaw ("Remove") != 0 && archaeologyRemoved == 2 &&
			removeAxisInUse == false){
			archaeologyRemoved = 0;
			removeAxisInUse = true;

			foreach (GameObject go in gameObjectArray) {
				go.SetActive (true);

		if (Input.GetAxisRaw ("Remove") == 0){
			removeAxisInUse = false;

Then, the VertexRenderer script replaces the model with lines:

using UnityEngine;
using System.Collections;

		//Code written by R. P. Barratt
		//Heavily based on a script by Naojitaniguchi (2015).

		//Renders the selected elements as lines.

public class VertexRenderer : MonoBehaviour {

	public Color lineColor;
	public Color backgroundColor;

	private Vector3[] lines;
	private ArrayList linesArray;
	private Material lineMaterial;
	private MeshRenderer meshRenderer;
	private Material initialMaterial;

	public void Start () {

		//Finds the components.
		GetComponent<Renderer> ().enabled = false;
		meshRenderer = GetComponent<MeshRenderer> ();
		if (!meshRenderer) {
			meshRenderer = gameObject.AddComponent<MeshRenderer> ();

		//Saves the initial material.
		SaveInfo ();

		//Finds the line material and sets it.
		Shader shader1 = Shader.Find ("Lines/Background");
		meshRenderer.material = new Material (shader1);
		Shader shader2 = Shader.Find ("Lines/Colored Blended");
		lineMaterial = new Material (shader2);
		lineMaterial.hideFlags = HideFlags.HideAndDontSave;
		lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave; 

		//Creates a list of lines based on the mesh.
		linesArray = new ArrayList ();
		MeshFilter filter = GetComponent<MeshFilter> ();
		Mesh mesh = filter.sharedMesh;
		Vector3[] vertices = mesh.vertices;
		int[] triangles = mesh.triangles; 

		for (int i = 0; i < triangles.Length / 3; i++) {
			linesArray.Add (vertices [triangles [i * 3]]);
			linesArray.Add (vertices [triangles [i * 3 + 1]]);
			linesArray.Add (vertices [triangles [i * 3 + 2]]);

		lines = new Vector3[triangles.Length];
		for (int i = 0; i < triangles.Length; i++) {
			lines [i] = (Vector3)linesArray [i];

		//Sets material.
		meshRenderer.sharedMaterial.color = backgroundColor;
		lineMaterial.SetPass (0);

	public void OnRenderObject(){

		//Draws lines based on mesh.
		GL.PushMatrix ();
		GL.MultMatrix (transform.localToWorldMatrix);
		GL.Begin (GL.LINES);
		GL.Color (lineColor); 

		for (int i = 0; i < lines.Length / 3; i++) {
			GL.Vertex (lines [i * 3]);
			GL.Vertex (lines [i * 3 + 1]); 

			GL.Vertex (lines [i * 3 + 1]);
			GL.Vertex (lines [i * 3 + 2]); 

			GL.Vertex (lines [i * 3 + 2]);
			GL.Vertex (lines [i * 3]);

		GL.End ();
		GL.PopMatrix ();

	void SaveInfo(){

		//Saves initial material.
		initialMaterial = meshRenderer.material;

	public void RevertToStart(){

		//Returns to initial material.
		GetComponent<Renderer> ().enabled = true;
		meshRenderer.material = initialMaterial;

The script requires Unity3D to run at the moment, but I am sure it can be adapted for other platforms.

The reason for this script is to allow users to choose different options, displaying the finished model with a more realistic skin but also allowing for a more accurate representation.


Naojitaniguchi (2015). WireFrame. Available: https://gist.github.com/naojitaniguchi/862724c55bd322695511. Last accessed 20th Oct 2017.

Richards, J. D. (1998). Recent Trends in Computer Applications in Archaeology. Journal of Archaeological Research Vol.6 No.4 pp.331-382.

Strothotte, T., Masuch, M. and Isenberg, T. (1999). Visualizing Knowledge about Virtual Reconstructions of Ancient Architecture. Computer Graphics International.

Worthing, D. and Counsell, J. (1999). Issues arising from computer-based recording of heritage sites. Structural Survey Vol.17 No.4 pp.200-210.