Skip to content

Data Sources Selection and Morphing

Chart Guru 3D uses the shared ChartDataSource pipeline. A source publishes a frame; the host's definition and layers compile it into spatial marks. Put ManualChartDataSource, MockChartDataSource or a file or web source on the host or an inherited parent.

Input situation

Definition-driven 3D mapping

Single-series points

Bind X, Y and Z channels to numeric, date or category columns. An automatic layer uses row index and depth lanes when the data has no explicit spatial positions.

Multi-series data

Bind several value columns for wide-series data, or a Series column for long data. Without explicit Z, supported marks use series depth lanes.

Surface3D grid

Bind grid X, Z and height columns for a sampled surface, or use a Surface function layer. Missing grid values remain holes.

Pie3D / Donut3D

Values form extruded sectors. Pie and Donut fill their host footprint while preserving the intended data proportions.

Radar3D

Categories define the spokes; values set the radial distances and series occupy depth levels. The radial domain controls the rings and marks consistently.

Range entries

Rectangle3D and Rule3D can use X/Y/Z start and end values.

Binding Data Sources

The host chooses runtime SetData first, then its enabled resolved source, a ChartDataAsset, and the definition's inline table. A source on a parent is inherited only by charts without their own data. Configure mapping in the chart's Marks layers; there is no Target Chart3DComponent field.

Chart3DComponent host = gameObject.AddComponent<Chart3DComponent>();
host.Definition.Type = ChartType.Bar3D;
MockChartDataSource mock = gameObject.AddComponent<MockChartDataSource>();
mock.Regenerate();
host.Rebuild();
// The host resolves the source on its GameObject and compiles its frame.

3D Selection and Morphing

ChartRaycaster routes scene pointer events through Chart3DHitTester. The hit includes the selected mark and X/Y/Z values; Canvas and UI Toolkit outputs use their own view for the same interaction. Enable selection and hover in Behavior, and use Orbit for drag rotation.

  • MorphTo changes a definition-driven 3D host to another 3D chart family and retargets compatible channels.
  • Value-only SetData(frame, shapeChanged: false) updates compatible marks while columns, row count and categories stay fixed; unsupported shapes rebuild safely.
  • A custom ChartDataSource can overwrite the values of its published columns and call PublishValueChange once for all changed columns.
  • PlayLift(0f) flattens a spatial chart and PlayLift(1f) lifts it into depth without changing its data; the shared Designer uses this for dimension transitions.
  • Chart3DImage, Chart3DTexture and Chart3DElement expose the same lift and view controls while preserving their independent output views.
  • Function surfaces and sampled grids keep their supported update paths; do not label a changed row count, columns or categories as a value-only change.

Shared chart workflows also apply to 3D data: semantic selection links can propagate point and X/Y/Z range state, and accessibility descriptors, audio graphs and semantic CSV/JSON exports can consume 3D values through the shared chart model. See the base Chart Guru manual for setup and ownership. Configure the 3D host's screen-space frames when bridging accessibility, and choose a semantic point match when linked charts use different mark orders.