@pmndrs/xr
Version:
VR/AR for threejs
26 lines (25 loc) • 1.05 kB
JavaScript
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;
}
});
}