UNPKG

@pmndrs/xr

Version:
26 lines (25 loc) 1.05 kB
import { Material, Mesh } from 'three'; import { DefaultGltfLoader } from '../index.js'; export async function loadXRControllerModel(layout, loader = DefaultGltfLoader) { const { scene } = await loader.loadAsync(layout.assetPath); return scene.clone(true); } /** * function for getting the object of a specific component from the xr controller model */ export function getXRControllerComponentObject(model, layout, componentId) { const component = layout.components[componentId]; const firstVisualResponse = component.visualResponses[Object.keys(component.visualResponses)[0]]; if (firstVisualResponse == null) { return undefined; } return model.getObjectByName(firstVisualResponse.valueNodeName); } export function configureXRControllerModel(model, options) { model.renderOrder = options?.renderOrder ?? 0; model.traverse((child) => { if (child instanceof Mesh && child.material instanceof Material) { child.material.colorWrite = options?.colorWrite ?? true; } }); }