Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions javascript/MaterialXView/source/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,17 +170,19 @@ function onWindowResize()
function animate()
{
requestAnimationFrame(animate);
const scene = viewer.getScene();

if (turntableEnabled)
{
turntableStep = (turntableStep + 1) % 360;
var turntableAngle = turntableStep * (360.0 / turntableSteps) / 180.0 * Math.PI;
viewer.getScene()._scene.rotation.y = turntableAngle;
viewer.getScene().setUpdateTransforms();
scene._scene.rotation.y = turntableAngle;
scene.setUpdateTransforms();
}

renderer.render(viewer.getScene().getScene(), viewer.getScene().getCamera());
viewer.getScene().updateTransforms();
scene.updateUniforms();
renderer.render(scene.getScene(), scene.getCamera());
scene.updateTransforms();

if (captureRequested)
{
Expand Down
34 changes: 33 additions & 1 deletion javascript/MaterialXView/source/viewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ export class Scene
const cameraFarDist = 100.0;
const cameraFOV = 60.0;
this._camera = new THREE.PerspectiveCamera(cameraFOV, aspectRatio, cameraNearDist, cameraFarDist);

this._frame = 0;

this.#_gltfLoader = new GLTFLoader();

this.#_normalMat = new THREE.Matrix3();
Expand Down Expand Up @@ -265,6 +266,37 @@ export class Scene
});
}

/**
* Update uniforms for all scene objects. This is called once per frame
* and updates time and frame count uniforms.
*/
updateUniforms() {
this._frame++;

const scene = this.getScene();
const time = performance.now() / 1000.0;
const frame = this._frame;

scene.traverse((child) =>
{
if (child.isMesh && child.material && child.material.uniforms)
{
const uniforms = child.material.uniforms;
if (uniforms)
{
if (uniforms.u_time)
{
uniforms.u_time.value = time;
}
if (uniforms.u_frame)
{
uniforms.u_frame.value = frame;
}
}
}
});
}

// Determine string DAG path based on individual node names.
getDagPath(node)
{
Expand Down