Loading Multiple Streaming Models in the Same Scene Using Hoops Communicator

Hello Team,

I am currently working with Hoops Communicator and have successfully loaded a primary model (model1.scz) into the scene using the WebViewer as follows:

javascript

Copy code

let params = {
    containerId: "divId",
    streamMode: window.Communicator.StreamingMode.All,
    rendererType: window.Communicator.RendererType.Client,
    streamCutoffScale: streamCutoffScale,
    endpointUri: uri,
    boundingPreviewMode: Communicator.BoundingPreviewMode.None,
    model: 'model1.scz'
};

let _viewer = new window.Communicator.WebViewer(params);
_viewer.start();

I would like to load an additional model (model2.scz) into the same scene without replacing the primary model. Could you guide me on the best way to achieve this?

My Trials:

const root = this.viewer.model.createNode(rootNodeId, "combineModel");
await this.model.loadSubtreeFromModel(root, 'model2.scz');

Error: Missing model: ‘model2.scz’.

(Note: but the endpoint url for both the models are not same)

Thank you in advance for your assistance!

Hello @raja.r,

We would expect your call to load the second model (model2.scz) to succeed provided that the model is accessible and configured as such in the server. For example, if the second model is in the same directory as the first model (model1.scz), it should load in the viewer.

Can you please confirm that this is the case?

Thanks,
Tino

hello I am trying to load multiple scz files from my xml. Is there any method to load them as my current method is not able to load them.

code–> if (filePath) {
const modelName = filePath.slice(0, -4);
hwv.model.loadSubtreeFromModel(
nodeId,
${modelName}
);
}

Hello @nivedita.srivastava,

It looks like you are taking the substring of filepath as the model name to load. Provided that the model name is correct and the directory to that model is properly set up in the server configuration, your call to loadSubtreeFromModel should work.

Are you getting any errors in the web browser console?

Thanks,
Tino

hello, thank u for replying. This is the error I am getting-

The exception Incompatible load types indicates that you are loading a Stream Cache model into an existing non-streaming session designed for loading SCS files. You can do one of the following options:

  • Call the function loadSubtreeFromScsFile instead of loadSubtreeFromModel, for example, hwv.model.loadSubtreeFromScsFile(nodeId, "modelName.scs");
  • OR launch a streaming session in the Web Viewer so that you can still use loadSubtreeFromModel

I am already launching a streaming session throught web socket and using node server to render the model and I want to load scz files.

To clarify, in this context, streaming session refers to the file being used. SCS files are file-based whereas regular SC/SCZ are streaming formats.

In the web browser dev console, what are you getting when you run the following:
console.log(JSON.stringify(hwv.config));

{“containerId”:“viewer”,“endpointUri”:“ws://127.0.0.1:11182”,“streamingMode”:1,“rendererType”:0}

Thanks for providing the info.

Given that endpointUri is not a SCS, your session streaming based. What is the complete value assigned to the variable modelName in your code snippet?