diff --git a/_data/ph_authors.yml b/_data/ph_authors.yml
index b604a1141..cf11e1646 100644
--- a/_data/ph_authors.yml
+++ b/_data/ph_authors.yml
@@ -3516,3 +3516,17 @@
bio:
fr: |
Clément Godbarge est maître de conférences en humanités numériques à l'Université de Saint Andrews en Écosse, Royaume-Uni.
+
+- name: Kristine Hardy
+ orcid: 0000-0003-1660-4477
+ team: false
+ bio:
+ en: |
+ Kristine Hardy is a PhD Student in the School of Archaeology and Anthropology at the Australian National University, Canberra, Australia.
+
+- name: Mathieu Leclerc
+ orcid: 0000-0003-1093-802X
+ team: false
+ bio:
+ en: |
+ Mathieu Leclerc is a Lecturer in the School of Archaeology and Anthropology at the Australian National University, Canberra, Australia.
diff --git a/assets/building-3d-environments-threejs-pt-1-2/index_pt1_complete.html b/assets/building-3d-environments-threejs-pt-1-2/index_pt1_complete.html
new file mode 100644
index 000000000..0f5448b0a
--- /dev/null
+++ b/assets/building-3d-environments-threejs-pt-1-2/index_pt1_complete.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
diff --git a/assets/building-3d-environments-threejs-pt-1-2/main.css b/assets/building-3d-environments-threejs-pt-1-2/main.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/assets/building-3d-environments-threejs-pt-1-2/models.zip b/assets/building-3d-environments-threejs-pt-1-2/models.zip
new file mode 100644
index 000000000..1996e6ebd
Binary files /dev/null and b/assets/building-3d-environments-threejs-pt-1-2/models.zip differ
diff --git a/assets/building-3d-environments-threejs-pt-1-2/png_sceneDRACO.glb b/assets/building-3d-environments-threejs-pt-1-2/png_sceneDRACO.glb
new file mode 100644
index 000000000..c043c4a61
Binary files /dev/null and b/assets/building-3d-environments-threejs-pt-1-2/png_sceneDRACO.glb differ
diff --git a/assets/building-3d-environments-threejs-pt-1-2/textures.zip b/assets/building-3d-environments-threejs-pt-1-2/textures.zip
new file mode 100644
index 000000000..98445587d
Binary files /dev/null and b/assets/building-3d-environments-threejs-pt-1-2/textures.zip differ
diff --git a/en/lessons/building-3d-environments-threejs-pt-1.md b/en/lessons/building-3d-environments-threejs-pt-1.md
new file mode 100644
index 000000000..3e9d8ec38
--- /dev/null
+++ b/en/lessons/building-3d-environments-threejs-pt-1.md
@@ -0,0 +1,826 @@
+---
+title: "Building Interactive Environments for 3D Models with three.js (Part 1)"
+slug: building-3d-environments-threejs-pt-1
+layout: lesson
+collection: lessons
+date: 2026-10-26
+authors:
+- Kristine Hardy
+- Mathieu Leclerc
+reviewers:
+- Jessica C. Linker
+- Steffen Bauer
+editors:
+- Massimiliano Carloni
+review-ticket: https://github.com/programminghistorian/ph-submissions/issues/607
+difficulty: 2
+activity: presenting
+topics: [website, creative-coding]
+abstract: This two-part lesson series shows how to use the three.js JavaScript library to create websites featuring 3D models that can be interactively viewed, selected, and even turned into a simple game. In Part 1, you will learn how to create a website featuring a 3D model that illustrates the rich diversity of ceramics across the Papua New Guinea region, while considering key aspects of working with cultural heritage materials.
+avatar_alt: An illustration of a round, textured ceramic pot with a wide opening, decorative geometric patterns, and three short, stubby feet.
+doi: 10.46430/phen0136
+sequence: 1
+next: building-3d-environments-threejs-pt-2
+series_total: 2 lessons
+---
+
+{% include toc.html %}
+
+## Introduction
+
+Advances in computing continue to increase our ability to display 3D models on websites, create virtual museums, and make heritage information more accessible. The use of interactive 3D models on websites enables examples of archaeological and historical material culture to be presented more effectively. 3D models are generally more engaging than 2D images, largely because the extra dimension encourages user interaction. The act of moving around a model and choosing which areas to examine and learn more about creates a more personalised experience, contributing to the user forming a relationship with the model. This relationship can be further strengthened if the model can be manipulated or incorporated into a game, especially a puzzle. Puzzles increase the amount of time users spend with a model and can encourage them to notice details they might otherwise overlook. The sense of achievement that comes from solving a puzzle can also help strengthen a positive relationship with a model and its subject.
+
+This lesson is the first in a two-part series that introduces [three.js](https://threejs.org) (a JavaScript library) as a tool for creating engaging digital research outputs using 3D models. Together, the lessons show how to use three.js to create a website and (optionally) a game, ‘The Jars of Papua’, featuring interactive 3D models that illustrate the diversity of pottery technologies across communities in the Papua New Guinea region. In this lesson, Part 1, you will learn about the basic components of 3D models and how to use three.js to create a website featuring a 3D model of multiple ceramic vessels (such as pots or jars) displayed on a map of Papua New Guinea. [Part 2](/en/lessons/building-3d-environments-threejs-pt-2) builds on this foundation. In that lesson, you will create a more complex interactive website in which selecting a vessel reveals information about the local community and their ceramics. Part 2 also shows how to create a matching puzzle in which users match ceramics to the community that created them (if a vessel is dragged to the corresponding community, the background colour of the scene changes).
+
+### Why Use 3D Models for Cultural Heritage
+
+Web models and digital games can help the dissemination of archaeological information. Rather than solely writing texts about artefacts, providing communities with opportunities for more direct engagement with the archaeological past can be considered a goal of archaeologists[^1]. Virtual (or printed) cultural heritage models have the advantage that they can be inspected without the risk of damaging an archaeological artefact. They can also be inspected at different scales: houses, sites, or villages can be scaled down to reveal how different areas relate to one another, while small artefacts, such as coins, can be magnified so that small details can be more easily seen. In these two lessons, vessels are scaled down so that many can be compared and placed on a geographic map. This kind of visual and geographical placement can help communicate the links between artefacts and their creators more vividly than a simple label. Finally, the use of models can also ideally help reduce the removal, and facilitate the return, of original artefacts to the communities that created them and their descendants.
+
+3D modelling is not only an engaging way of disseminating information; it can also be a valuable tool for revealing relationships and supporting new insights. For example, comparing aspects of material culture, such as pottery, across communities can help explore shared histories. For pottery, these comparisons may be based on appearance (form and decoration) and methods of production. However, the ways in which these forms and techniques spread may vary. Similarities do not necessarily reflect population movement alone[^2], especially in the case of material culture, as ideas and techniques can spread through one culture learning from another as well as through innovations within a community[^3]. Comparing different pottery styles can therefore help investigate shared heritages, community contacts, and local innovations. Visualising pottery forms and their geographic distribution through 3D modelling helps illustrate these relationships, especially when annotated with additional information such as the language family of the community[^4], [^5].
+
+### Lesson Goals
+
+This two-part lesson series provides a brief introduction to creating websites with 3D models using three.js.
+
+Part 1 starts by introducing fundamental concepts and components of 3D models along with some of the ethical considerations involved in generating and using 3D models when working with cultural heritage. You will then explore those concepts and components in practice, using an example 3D model of ceramics from Papua New Guinea (provided by the authors) and the three.js web editor. The three.js editor is a browser-based tool that allows you to view and interact with 3D models without writing any code. Finally, you will use the three.js JavaScript library to create a webpage featuring the example 3D model of Papua New Guinea pottery displayed on a map. You will be provided with pre-written code snippets that you will copy-paste, add to, and modify step by step. In doing so, you will learn how to set up a scene (the 3D space that contains the model), define a camera (the viewpoint from which users view the model), add lighting (to make the model objects visible and more realistic), and add navigation (such as mouse controls) to allow users to move around the scene.
+
+In Part 2, you will build on this foundation to create a more interactive website for ‘The Jars of Papua’ using three.js. You will learn how to work with multiple models, allow users to select and interact with them, and display additional information in response to user actions. You will also explore how to turn the scene into an interactive game, where models are initially positioned randomly and can be moved and matched to their corresponding communities. You will do this by setting up a test in the code to run each time a model is moved, checking whether it has been placed in the correct position. Successful matches trigger a background colour change.
+
+### Software Requirements and Installation
+
+To complete this lesson, you will need a few basic tools and some familiarity with simple web and programming concepts. No prior experience with 3D modelling or three.js is required.
+
+#### Web Browser
+
+You will need a modern browser (such as Chrome, Safari, or Edge). Most current web browsers should work, although some versions of Safari can have problems. If your browser can display the [three.js site](https://threejs.org) and the various sample projects on the home page, it should work.
+
+When building a website, it is useful to be able to identify and fix any problems that may arise (a process known as debugging). Browsers include built-in developer tools that help with this. In particular, the console displays error messages that can help you understand why something is not working. In Chrome, you can open the console via: **View** > **Developer** > **JavaScript Console**. If your webpage is not loading as expected, checking the console is often the first step. You can then search online for explanations of any error messages you encounter. You may also need to reload the page while the console is open to see the error messages. For more information on debugging code, see the [three.js manual](https://perma.cc/QVK4-TFTQ).
+
+#### Web Development
+
+In the first half of this lesson, you will explore models without writing code. In the second part of the lesson, you will use code to create a webpage. Webpages are typically built using three main computer languages: HTML (defines structure), CSS (defines appearance), and JavaScript (defines behaviour). This lesson focuses on JavaScript and does not explain HTML or CSS in detail. You do not need prior knowledge of these languages to complete the lesson, but some familiarity may help you follow the code more easily. If you want to learn more about the basic components of a website, [w3schools](https://perma.cc/66V4-ZX7S) provides a guide and tutorials on HTML, CSS, and JavaScript.
+
+#### Text Editor and Terminal
+
+To write and run code, you will need a text editor and a computer terminal (for example, Windows PowerShell, the terminal in macOS or Linux, or the text editor's terminal). In this lesson, you will use Visual Studio Code (VSC), which includes both a text editor and a terminal. It can be downloaded from [https://code.visualstudio.com](https://code.visualstudio.com). Follow the website instructions to install it. It is free and available for Windows, macOS, and Linux. Many extensions are available for VSC, and syntax highlighting (code colouring) can help detect issues such as unclosed tags or quotes.
+
+You can open the terminal in VS Code via: **Terminal** > **New Terminal**. You will use the terminal to run a few simple commands. No advanced knowledge is required, although some familiarity with basic command line usage can be helpful. Mainly, you will need to be able to check which folder you are working in and navigate to the correct folder. If you use the VS Code terminal, this is usually handled automatically when you open your project folder.
+
+
+VSCodium is an alternative version of VS Code that removes some telemetry (usage tracking) and AI chat features. It can be used in the same way for this lesson.
+
+
+#### Node.js (for Running Your Webpage Locally)
+
+To view your webpage while you are building it (for example, to check that the code is working or how changes affect your site), you will use a tool called [Node.js](https://nodejs.org).
+
+Node.js allows you to run a local server that lets your browser load your files correctly (for example, at an address such as `http://localhost:3000`). This is necessary because some JavaScript features (including those used in this lesson) only work when files are served through a server.
+
+Node.js is a free JavaScript tool and is available for Windows, macOS, and Linux. Follow the installation instructions on the website. To check that it is working, type the following in your terminal:
+
+```
+node -v
+```
+
+If installed correctly, you will get a version number. If you have problems installing Node.js, try using a search engine with the error message for help or watch one of the many tutorials available on the web.
+
+The code used in this lesson has been tested with version 18.14.1.
+
+#### Data for this Lesson
+
+As an example case study, you will use a 3D model created by the authors. More information about the model as well as download instructions will be provided later in the lesson.
+
+### Papua New Guinea Pottery
+
+In this two-part lesson series, you will focus on modelling the diversity of pottery across the Papua New Guinea region as a case study. This example helps show how 3D modelling can be used not only to visualise different styles and types of material artefacts, but also to provide a sense of their relationships to the communities that made them. Although pottery is not ubiquitous throughout Papua New Guinea and West Papua, many communities have a history of making ceramic vessels for use in cooking, storage or ceremonial purposes. Pottery was first introduced to the Papua region over 3000 years ago[^6] and the many different techniques, forms and decorations found are probably the result of a combination of local innovations and influences from different external sources. The technical and sometimes ceremonial or spiritual knowledge required to construct and decorate pots is passed down through generations or occasionally from community to community, in a process termed cultural transmission. In trying to understand this cultural transmission, researchers compare factors such as decoration, form and production techniques among the different communities.
+
+3D modelling can be a useful approach for comparing these dynamics of transmission and explore the diversity and intricacies of material artefacts in the context of the communities that make them. For example, in the southeast, women's pottery communities (including Mailu and Misima-Paneati speakers) employ a range of techniques, typically finishing vessels with rings made from clay coils and decorating them with predominantly geometric incised or appliqué designs. In many inland communities, potters (including Adzera, Dimiri and Iatmul speakers) use spiral (or ring) construction, building vessels by stacking circular clay coils, with decorations often incorporating sculptural elements and carvings. In coastal communities (including the Bilibil), women make paddle-and-anvil-made vessels from a ball of clay that is beaten on the outside with a wooden paddle, while a stone (anvil) is held inside the pot; these are generally rounder, less decorated and often used for water storage. In these lessons, you will be working with 29 models of ceramics that show examples of vessels made using different building and decorating techniques. In Part 2, step-by-step instructions will be provided for individually adding six models (from Bilibil, Mailu, Misima-Paneati, Adzera, Dimiri and Iatmul speakers), with the assets and information for another 23 provided for you to practise with.
+
+
+### Ethics of Modelling Cultural Heritage
+
+How different communities feel about their cultural objects being modelled and represented on websites is an area that would benefit from further research. While virtual models and interactive websites have the ability to increase accessibility to cultural heritage and help effectively communicate academic research to a broader community, there are important ethical considerations that should be addressed when creating such resources. These apply both at the level of model creation and website design.
+
+If the website is intended to communicate academic research, then community involvement and control should have occurred at an earlier stage of the research. However, as in other fields, technological advances have occurred that could not be foreseen by data/artefact collectors, and ideas around what constitutes ‘informed consent’ have also evolved. The use of cultural heritage models, especially from communities that have been exploited and looted, needs to be carefully considered. There are laws and guidelines, such as the [UNESCO Convention for the Safeguarding of the Intangible Cultural Heritage](https://perma.cc/YM9F-TS7K), [the Code of Cultural Heritage and Landscape (Italy)](https://perma.cc/R76N-VMZK) and the [Protection of Movable Cultural Heritage Act (Australia)](https://perma.cc/G2EX-KWW3) that back up these ethical concerns in many cases. Ideally, informed consent from the maker community, or their descendants, should be obtained for modelling cultural objects. In some countries, intellectual property legislation may require evidence that at least several attempts have been made to obtain permission.
+
+Images of human remains can be offensive to some communities, so modelling them should be carefully considered and may require content warnings. ‘Utilitarian’ items are generally considered exempt from copyright, but some ceramics (or wooden/stone artefacts) have ceremonial purposes, and objects (particularly funerary artefacts) can also have different values and associations for different people and cultures, as highlighted by recent (2023) [Native American Graves Protection and Repatriation (NAGPRA) legislation](https://perma.cc/8H5G-M9QB) in the USA concerning the display of certain Native American objects (including burial pottery)[^7].
+
+One approach for connecting media, including models, with cultural information, such as guidance on ethical reuse or cultural restrictions on viewing, involves the inclusion of [Traditional Knowledge (TK) Labels](https://perma.cc/JX53-2CYL) in media metadata. The use of symbolic, less realistic representations of material culture is a related approach for minimising the use of potentially culturally inappropriate digital reproductions. As discussed later, this approach can have other advantages for use in games.
+
+The available guidelines and protocols are generally more targeted at institutions, but it is worth considering [Basic principle and tips for 3D digitisation of cultural heritage](https://perma.cc/5M63-HEZL) and [Protocols for using First Nations cultural and intellectual property in the arts](https://perma.cc/J3FF-LFV9).
+
+It is also important to reference the sources of images and models used in a website. In this lesson, references will be provided through an information panel on the website. The degree to which models of cultural artefacts are covered by copyright, and who that copyright belongs to (the creators of the original artefacts, the current ‘owners’ or caretakers of the artefacts, or the creators of the model), depends on several factors, and is not always clear-cut [^8], [^9], [^10]. Many researchers aim to make their models and site code available for others to use to increase the dissemination of information and promote further research. Often, models and code are given [Creative Commons licences](https://perma.cc/GES7-EGMQ) such as CC-BY-NC (Creative Commons Attribution-NonCommercial). However, it is always worth considering that your models may be used in virtual scenes you disagree with or find offensive, for example the pot models could be used in a potentially culturally derogatory manner such as illustrating cannibalism). While you can request users to only use your models and code for non-derogatory purposes, publicly available digital assets are increasingly being scraped by artificial intelligence (AI) ‘bots’, thus potentially contributing to models used in scenarios you did not foresee. The use of the `NoAI` HTML meta tag may help discourage such data harvesting.
+
+When making games using cultural heritage models, it is also important to reflect on whether scenes or puzzles adopt a colonial approach. For example, rather than allowing the user to steal or ‘collect’ artefacts in a video game, a better aim might be to gamify the return of artefacts to their place or community of origin. In the puzzle in Part 2 of this lesson, the pots are matched to their original community, as represented as a place on the map.
+
+
+## Introduction to 3D Modelling
+
+### Basic Components of 3D Models
+
+3D models are made from [meshes](https://perma.cc/65GX-YLRY): networks of nodes (points), also called vertices, connected by edges (lines) to form faces, also called polygons (Figure 1). These polygons are usually triangles (with 3 vertices) or quadrilaterals (with 4 vertices), and they can be combined to form a mesh (the 3D object). Some meshes are basic, predefined shapes such as spheres, cubes, planes, and tori (‘donuts’). These are known as ‘primitive’ models and can be created directly in three.js.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-01.png" alt="A mesh, the model and four maps for a white Staffordshire Bull Terrier on a red couch with three blankets. The two-dimensional maps include colour, normal, occlusion and roughness." caption="Figure 1. The mesh and maps (textures) for a model of a dog named ’Diva Demon’. A section of a reduced polygon mesh of the dog is shown for comparison. A patch of tan-coloured fur on the dog's head, and its brown collar can be located in the colour map. [See the model in SketchFab](https://skfb.ly/pzB7J). Model created from a quick [Polycam](https://perma.cc/3BA3-3XKS) scan." %}
+
+Some people like to build more complicated models by combining primitive models in three.js, but often these more complicated models are created with [Computer Aided Design (CAD)](https://perma.cc/XKL3-Q8PM) software such as [Blender](https://perma.cc/6M6V-EUVC) or with scanning processes such as [photogrammetry](https://perma.cc/BK5U-7GXQ) before they are imported into three.js as ‘complex’ models.
+
+In photogrammetry, models are computed from a series of overlapping photographs of an object taken at various angles[^11]. Photogrammetric models, including those from phone apps such as [Polycam](https://perma.cc/3BA3-3XKS), will typically have image [textures](https://perma.cc/32U3-29K4) (discussed in the following paragraphs) and be realistic (Figure 1 and the left side of Figure 2). Models made using Blender or other CAD software may be symbolic (simplified forms that represent, rather than mimic, objects and their characteristic features), or they can be made more realistic with the addition of image textures or complex materials (right side of Figure 2).
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-02.png" alt="Flow charts for photogrammetry and CAD model making. Photogrammetry requires multiple photographs, which are used to create a point cloud, then a mesh that is wrapped in a texture to make a model, such as a sherd. A jar CAD model can be made by tracing the vessel outline and rotating it." caption="Figure 2. Models can be created by methods that include photogrammetry and Computer Aided Design (CAD). [See the sherd model in SketchFab](https://skfb.ly/pzEEW)." %}
+
+Meshes can be decorated with ‘materials’ that have colour and other properties such as emission, roughness, metalness, opacity, etc. They can also be decorated with ‘textures’, which are images that are applied to the surface of a model to give it colour and detail. Generally speaking, a material refers to how a surface behaves and its properties (colour, shininess, how it reacts to light), and a texture is an image applied to a surface.
+
+Textures are two-dimensional image files with U (horizontal) coordinates from 0 to 1 and V (vertical) coordinates from 0 to 1 (Figures 1 and 2). Each vertex (node) in a model's mesh is also assigned U and V coordinates (in a process called [unwrapping](https://perma.cc/7V75-LK3D)). In texture mapping, these coordinates are used to match parts of the image to different surfaces (polygons) of the model. Each polygon in the mesh gets the pixels of the texture image that match the polygon defined by the UV coordinates. This allows the image to be ‘wrapped’ onto the 3D model as a colour map. If you inspect the colour map, mesh, and model in Figure 1, you should be able to see where parts of the map, such as the dog's tan head spot and the collar, are matched to the mesh.
+
+Textures with greyscale (from white to black) pixel intensities can also be used to convey other information, such as opacity ([alpha maps](https://perma.cc/4WZ3-E3CC)), roughness (roughness maps), and shadow effects ([occlusion maps](https://perma.cc/58E7-KKWA)) (Figure 1). Many 3D modellers will create [normal maps](https://perma.cc/J7N5-YWPA) for their models to simulate fine shape details. Although a polygon is flat, normal maps can be used to change how light interacts across the surface of a polygon to make it appear to have more complex details. The pixels in normal maps change how light sources interpret the direction in which different points in a polygon are ‘facing’, so that a flat polygon can appear to have a non-flat surface.
+
+Normal maps are colour ([RGB](https://perma.cc/N3XW-NV2Z)) images with the three channels (red, blue and green) providing information about surface direction. They are especially useful for (partly) retaining visual details when reducing the number of polygons in a model. Three.js can use normal maps, but for ‘The Jars of Papua’ interactive website in Part 2 you will only use colour map textures.
+
+If you are interested in UV mapping, you can use the **Model Inspector** in the bottom right corner of many models in [SketchFab](https://perma.cc/Z4HQ-H4MJ), including [’Diva Demon’](https://skfb.ly/pzB7J) (the dog) and the [’Papua Jars’](https://skfb.ly/putNM). In the **3D + 2D** view, you can see how the U and V coordinates on the model correspond to those on the texture map (Figure 3). The colour map texture (an image of a geographical map of Papua New Guinea) used in the lower model in Figure 3 is one of the textures that will be used in Part 2.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-03.png" alt="The dog and jar models in the Model Inspector in SketchFab." caption="Figure 3. The Model Inspector in SketchFab for the dog and Papua Jars models. The Papua Jars model is a composite model whose components include a plane textured with a geographical map of Papua New Guinea." %}
+
+### Model File Formats
+
+3D models can be stored in many different file formats. Some, such as [STL](https://perma.cc/8CDQ-PFWM), will only store the mesh. In this lesson, you will work with glTF (or `.glb`) files: the [GL Transmission Format (glTF) or GL Transmission Format Binary (glb)](https://perma.cc/Z3MG-GKAC) file format is one of the formats that can store meshes, textures, materials, animations and other properties.
+
+glTF/glb files (or rather, the meshes in them) can be compressed to reduce their file sizes, for example using [DRACO](https://perma.cc/E8JA-LHU9) compression. This can make models faster to download and load on a website. However, compressed files need to be decompressed before they can be displayed, which requires processing power (CPU). As a result, compressed files will not always load faster than uncompressed ones.
+
+glTF/glb files can also store several models in a single file. If you are creating a scene with multiple models for a website, there are two main approaches. You can choose to import each of the different models into software such as Blender (or the [three.js editor](https://threejs.org/editor/)), where you position, scale, and colour/texture each of them, and then export the resulting composite model (the whole scene) as a single `.glb` file. This is the approach used here in Part 1 with the `png_sceneDRACO.glb` file. Alternatively, you can import the models individually and arrange and alter them via the website code, as you will do in Part 2. There is also the option of separating out individual models from a file of composite models using the website's code, but this will not be covered in this lesson.
+
+### About the Models in this Lesson
+
+The models you will use in this lesson were created by the authors (who are not of Pacific Islander heritage) using CAD software. They are intended to be symbolic rather than realistic. While simplifying some of the designs in this way means that some of the artistry of the original potteries is not fully represented, it helps avoid reproducing culturally sensitive designs and respects the moral rights of the original communities.
+
+For this project, we chose to create symbolic models of non-ceremonial objects rather than realistic (photogrammetric) models. Creating realistic models would require the permission of the respective communities. Symbolic models were also used because they can convey the construction methods of the original vessels through the use of colour and a corresponding key. The method of construction is important not only for understanding the connections between the different pottery technologies, but also for the puzzle in Part 2, where colours act as the primary clues for users to match vessels to their communities.
+
+The individual vessel models used in this project were originally created by one of the authors (K. Hardy) as part of an exercise to learn CAD for 3D printing[^12]. The models were created using Blender and Fusion 360 by tracing or estimating the vessel profile (from the various sources cited in one of the information panels within the website's 3D model), rotating the profile 360 degrees around the vertical axis, and then, if necessary, using the sculpting tools to add the decorations (right side of Figure 2). As the models were designed to be printed 5-10 cm tall, decoration was simplified and added to reflect the different decoration types favoured by the different communities, such as [comb incision](https://perma.cc/C5PY-9X5Q), [impression](https://perma.cc/H9GJ-RWJF), [exposed coil](https://perma.cc/8CLY-RXAK) and [appliqué](https://perma.cc/WJS6-EEKD). Many communities produced more than one type of pot, and forms selected for the original printed collection were chosen to illustrate the variety of vessels in Papua.
+
+For use on a website, Blender was used to reduce the polygon count of the models. The composite model (used in this lesson) was created in Blender, with the addition of the map (added via the [‘import image as planes’ extension](https://perma.cc/AKR9-8S24)). The individual vessel models (used in Part 2) were exported as DRACO-compressed glTF files.
+
+These models have a [CC BY-NC-SA 4.0](https://perma.cc/FDY4-ZTTJ) licence. The ‘BY’ (attribution) means that if they are used, reference should be made to the authors/creators. The ‘NC’ (non-commercial) part means the models can be used and modified, but not for commercial purposes. The ‘SA’ (share-alike) part means that if the models are re-used, the containing work must have a similar licence.
+
+### Alternatives to three.js for Creating Websites Featuring Models
+
+In this lesson, we focus on the three.js JavaScript library because it is relatively easy to use for creating websites with 3D models, in part due to the large number of easily modifiable [tutorial examples](https://threejs.org/examples/) available. However, there are several alternatives for creating websites that include 3D models, which may be better suited to different coding abilities or types of projects. While this lesson focuses on three.js, many of the concepts covered here are also relevant to other JavaScript libraries, game engines (software used to build interactive 3D applications), and 3D modelling tools.
+
+Some platforms host existing models and allow you to annotate and embed them in your own website. For example, many cultural heritage models are hosted on SketchFab[^13], which allows for (limited) interactive annotations, where informative text appears when users click on certain areas of the model (Figure 4). Models such as the [’Papua Jars’](https://skfb.ly/putNM) or [’Diva Demon’](https://skfb.ly/pzB7J) can be linked and embedded in other websites. [Smithsonian Voyager](https://perma.cc/6LRN-5DTP), [3DHOP](https://perma.cc/3VD7-ZKGD) and [Kompakkt](https://kompakkt.de/about) also allow for models to be embedded in websites and offer more extensive model annotation. These platforms are useful for creating websites that present high-quality models alongside contextual information that appears as users interact with them. Researchers and students can also examine these models with measurement tools.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-04.png" alt="The jar models in SketchFab and several stylised models of jars from Papua, five of them numbered. Informative text is shown for jar 5." caption="Figure 4. The Papua jar models in SketchFab with five annotations." %}
+
+For more complex websites, such as those with multiple models that users can manipulate independently, or that require a test to see if models have been placed correctly relative to one another, JavaScript libraries, such as three.js and [Babylon.js](https://perma.cc/4ES6-FQU2), or game engines such as [Godot](https://perma.cc/LNQ6-BAW5), [Unity](https://unity.com) and [Unreal Engine](https://perma.cc/6A6P-NUBW), are typically required. Some game engines also offer no-code approaches that might appeal to some users.
+
+Another advantage of three.js is that it can be used to make websites viewable in [virtual reality](https://perma.cc/9YFG-CXJG). Three.js, by itself, is not a [physics engine](https://perma.cc/NHL6-HB3P), so it cannot generally simulate object interactions, such as detecting object collisions. It can be used with physics engine libraries, such as [Ammo.js](https://perma.cc/KJ6U-BEPC), [Cannon.js](https://perma.cc/6NFJ-WLWN) or [Rapier.js](https://perma.cc/ZC34-EM9G), as shown in some of these [three.js physics examples](https://threejs.org/examples/?q=physics). The Babylon.js library has greater built-in support for physical interactions and may therefore be a better option for digital exhibits that require more complex object interactions.
+
+## Exploring Models with the three.js Editor
+
+In Part 2, you will build up ‘The Jars of Papua’ website from multiple models of jars and planes, but here you will start exploring the example composite pottery model using the [three.js editor](https://threejs.org/editor/). You will explore how concepts discussed earlier — such as meshes, model formats and sizes, materials, textures, lighting, and position (coordinates) — work together within a 3D scene.
+
+Download the composite model []`png_sceneDRACO.glb`](/assets/building-3d-environments-threejs-pt-1-2/png_sceneDRACO.glb) we've created for you to experiment with. Open the [three.js editor](https://threejs.org/editor/) in a new browser window (right-click on the link) and import the model with **File** > **Import** (Figure 5).
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-05.png" alt="Web editor showing a dark rectangular prism with small jars on it." caption="Figure 5. The three.js editor with the composite model imported." %}
+
+Change the view from **SOLID** to **WIREFRAME** using the drop-down menu at the top right of the model view window, and zoom in and move around with your mouse. Expand the model hierarchy in the **SCENE** window/tab (on the right) by clicking on the *+* symbol next to `png_sceneDRACO.glb` and then the subsequent *+* symbols in the hierarchy. Double-click on a jar name (try **aibom_LOC**) and it should centre that jar. You can also double-click on a jar model in the main window.
+
+You should be able to see that the jars (and the plane) are made of triangles (Figure 6). The fewer nodes or faces in the mesh, the smaller the model file size. Reducing the number of faces can reduce the level of detail in a model, but large model files may load slowly or be slow to respond on a website.
+
+The number of nodes or faces in a model can be reduced using 3D modelling software such as Blender. The process of reducing the nodes or faces in a model is known as retopology. In Blender, this is relatively easy to do if the model is imported in STL format without an image texture. The individual jar models (used in Part 2) were designed and retopologised in Blender to file sizes under 700KB.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-06.png" alt="Web editor showing the wireframes of jar meshes." caption="Figure 6. The three.js editor in wireframe view zoomed in on a jar mesh." %}
+
+You may have models that you have created using photogrammetry, or downloaded from sites such as [SketchFab](https://perma.cc/Z4HQ-H4MJ), that have image textures. These are easier to retopologise in commercial software such as [Agisoft’s Metashape](https://perma.cc/YV88-XT26), but it is also possible to use Blender or the free photogrammetry software [Meshroom](https://perma.cc/P2MV-CB5M).
+
+Before using your models on your website, it can be helpful to open them in a viewer to check that they load correctly and display as expected (for example, whether the textures appear correctly and whether the models are positioned and scaled correctly). You can test your models by importing them into the three.js editor or, if they are glTF files, in [Don McCurdy's glTF viewer](https://gltf-viewer.donmccurdy.com).
+
+When inspecting models, you may need to add or modify lights, as some materials are not visible without them. To do so, change **WIREFRAME** back to **SOLID**. In the editor, add a hemisphere light from the **Add** > **Light** > **Hemisphere** menu. If you select the hemisphere light in the **SCENE** tab, you can change the colour to white and the ground colour to black (Figure 7). This creates light that appears to come from above (like light from the sky) and gradually darkens towards the ground. You can use the editor to experiment with different lighting options and see how they make objects visible and affect how the model appears.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-07.png" alt="Web editor showing jar models in different colours." caption="Figure 7. The jars under a hemisphere light." %}
+
+If you zoom out, you can see the map. The jars are coloured because they have materials, which define how their surfaces appear. The map, by contrast, is a flat surface (a plane) with an image texture applied to it (Figure 8).
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-08.png" alt="Web editor showing that the rectangle the jars are on has a map of Papua New Guinea." caption="Figure 8. The Papua New Guinea map and its image texture (called a map in the Material tab)." %}
+
+Click on a jar. While in the editor, it is useful to look at the red, green, and blue arrows in the centre of the scene, which show the coordinate system. This system is used to position objects in 3D space.
+
+Different graphics programs and game engines use different coordinate systems. In three.js, positions are defined using x, y, and z values. These values determine where an object is positioned in the scene. In three.js, x is left (-) and right (+), y is down (-) and up (+) and z is far (-) and near (+) (Figure 9). This is known as a Y-up, right-handed coordinate system.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-09.png" alt="Web editor with three arrows, coloured red, green and blue, showing the x, y and z axes." caption="Figure 9. The three.js coordinate system. The red arrow shows the positive x direction, the green arrow shows the positive y direction, and the blue arrow shows the positive z direction." %}
+
+If you select a jar and look in the **OBJECT** tab, you will see its x, y, and z position values; in other words, how it was placed (Figure 10). You can change these values and see how the jar moves. You can also change the scale or rotation of a jar and test how these transformations affect the model.
+
+{% include figure.html filename="en-or-building-3d-environments-threejs-pt-1-10.png" alt="Web editor showing a round jar (manus001), with its x, y and z positions visible in the geometry window." caption="Figure 10. The position of the jar made by one of the communities on Manus Island." %}
+
+## Building an Interactive 3D Website with the three.js JavaScript Library
+
+In the previous section, you gained familiarity with some basic concepts in 3D modelling and explored models in your browser using the three.js editor. In the following sections, you will begin working with the three.js library in code to create a website featuring 3D models. To do this, you will set up the project file structure and use the text editor Visual Studio Code (VSC) to create a webpage, set up a scene with a camera and lights, load the model, and add camera controls using the three.js library.
+
+There are two main ways to use the three.js JavaScript library. This lesson uses the library via a [content delivery network (CDN)](https://perma.cc/5YFV-AUPN), which fetches and loads the library directly from an online server. The alternative is to download the library and manage it locally using build tools such as [Vite](https://perma.cc/Y9PC-UNYL). This approach is more flexible and is commonly used in larger or more complex projects, but it requires additional setup. For this lesson, the CDN approach keeps things simple and is sufficient for getting started.
+
+This lesson uses three.js version 0.160.0, although it has been tested and works with later versions such as 0.166.1. If you use a different version, make sure it is updated consistently throughout the code. For example, make sure to change the version number both where the import maps refer to three.js (for instance, use `three@0.166.1` instead of `three@0.160.0`) and later, when the DRACO file compression loader is imported. Three.js versions are not always fully backward compatible, so using different versions may occasionally cause issues. Browser updates may also occasionally cause incompatibility problems.
+
+### Creating a Webpage
+
+In this section, you will set up a basic website and load the three.js library into it, so that you can start writing code to display a 3D scene.
+
+First, you will set up the directories and files for the project. Create a new folder called `myscene`. Within this folder, create a folder called `models` (which will contain the models you want to display) and a folder called `textures` (you will use this folder in Part 2). Put the `png_sceneDRACO.glb` file you downloaded previously in the `models` folder.
+
+In VSC, open the `myscene` folder. Create a new file and call it `index.html`. This file will contain the code for your webpage. It must be named exactly `index.html` because browsers automatically look for and open a file with this exact name when loading a website locally.
+
+For the purposes of this lesson, you will write all the code directly in this file. This is not best practice: generally, JavaScript code is written in a separate (`.js`) file and then imported into the HTML (`index.html`) file. However, keeping everything in one file here makes it easier to see how the different parts work together.
+
+Also note that, whilst in some languages (such as Python) code indentation is required for the code to work correctly, in JavaScript indentation is not required. So if copying and pasting changes the indentation, you do not need to correct it, although proper indentation might make the code easier to read and help you copy and paste code in the correct place. If you run into problems when editing the code that you cannot fix, you can download and inspect our finished code [`index_pt1_complete.html`](/assets/building-3d-environments-threejs-pt-1-2/index_pt1_complete.html).
+
+In the `index.html` file, copy and paste the following, and save the file:
+
+```
+
+
+
+
+ PNG pottery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+This HTML file sets up a basic webpage and loads the three.js library so that you can begin writing 3D code.
+
+The file contains three main parts:
+
+- Basic webpage structure (``, ``, ``, ``), which defines the page and its content
+- A link to a stylesheet (`main.css`), which you will create below. This defines how the page looks (for example, background colour and text styling)
+- JavaScript code, which is where you will use three.js to create and display a 3D scene
+
+The JavaScript code shows how the three.js library is loaded. This happens in two steps: first, the `