ADAPT: Reading Terminal Market

In 2015, I worked as a summer researcher under Dr. Norm Badler on the ADAPT Project at the SIG Center for Computer Graphics at the University of Pennsylvania. ADAPT (the Agent Development and Prototyping Testbed) is a Unity platform designed for experimentation on virtual crowds, providing navigation mesh generation, steering, locomotion, animation, and behavior-tree-based decision controllers for crowds. The ADAPT framework is designed to work within Unity and is written in C# with core libraries written in C++ (Unity plugins). This summer's focus was to create a complete interactive marketplace environment, approximately simulating activities based on the local Philadelphia Reading Terminal Market, using this environment to model heat transfer and decay and to simulate the effects of environmental influences on the crowds. 

I worked to develop the interactive marketplace environment, based on the local Philadelphia Reading Terminal Market. I was responsible for modeling and lighting the marketplace environment, and helped to integrate ADAPT locomotion, wayfinding, and animation functionality to our project, as well as our team's heat map visualizer. 

Marketplace environment created in Maya 2015, imported and lit in Unity 5. Scripting done in C#.

Summer 2015. Filed under Computer Graphics, Animation, Research, Code.

Market Environment and Materials

The marketplace environment, populated with stalls, seating, and structures representative of Reading Terminal Market, was built in Maya and imported and lit in Unity. A NavMesh marks the walkable environment for the ADAPT agent, and automatic doors open and close as an agent approaches and leaves. Base market environment:

 Early stage Maya model, with building, stalls, and layout based on Reading reference images and floor plans.

Early stage Maya model, with building, stalls, and layout based on Reading reference images and floor plans.

Exterior from 12th Street

Center seating area

View out to Filbert Street

Market interior

Caroline Smith and I used images taken at Reading to prepare realistic materials and shaders for use in Unity, along with signs and additional Maya scene models. Textured market environment, with signs, details, and iconic stalls:

Agent walking down Filbert St, with floating character label

Iovine Brothers Produce

12th Street vendors, with Bassetts Ice Cream, Golden Bowl, Fair Food Farmstand, The Rib Stand, and Beiler's Bakery

Center court, with Philbert the Pig and vendors Flying Monkey Bakery, Hunger Burger, Molly Malloy's, and Wursthaus Schmitz

Behaviors and Actions

The Reading Terminal set-up allows agents to use ADAPT-based nagivation and animations. 'Waypoints' serve as targets for agent browsing, ordering, and wandering behavior. Agents can execute gestures and animations from the ADAPT library, and open automatic doors using box colliders.

Three Point Wander - Three waypoints are placed randomly on the navigable NavMesh, which the agent randomly cycles between

Small Crowd Wander - A small crowd is instantiated in the market, cycling between three random waypoints.

Heat Visualization

A core focus for this project was representing and visualizing changing environment conditions in the marketplace, including ambient interior temperature and the way agents navigate and react in the space due to comfort preferences. I helped to integrate Charles Wang and Mike Rabbitz's heat data structure, along with Nihaar Narayan's realistic characters. I also helped to tweak and add to the UX/UI heat visualization tools, scripted toggles to turn on and off information, added updating floating character labels with dynamic heat information, and added a bird's eye heat map view.

Heat is dynamically represented in the current model by transparent colored shaders on the voxels, on a green - red color scale. Green indicates low heat. Red indicates high heat. Redness intensity increases with heat. Static heat sources are represented by sphere heat markers, categorized by high, medium, or low intensities, depending on their source. The heat stored and visualized by each voxel dissipates over time by a decay factor, represented by changing color on the heat map. The heat map and information can be toggled on and off during play, and a user can switch to see a bird's eye view of the dynamic heat map.

Heat visualization demo: