以编程方式识别唯一模型

Identify unique model programmatically

如何以编程方式在查看器中识别模型?即模型的哪些参数可以帮助区分不同的模型?

我尝试了什么:

viewer.model.id 总是 returns 1.

viewer.model.myData.basePathviewer.model.myData.urn 只是一串路径,一个模型以后可能会采用与另一个模型相同的路径。

viewer.model.myData 中对 packFileTotalSizeprimitiveCount 等更多唯一值进行散列处理可以得到更接近 1 对 1 的 ID,但这更像是一种 hack。

是否有哈希、名称或模型 ID 更可能是一个模型唯一的?

如果您的文件存储在OSS上,您可以请求file details,并获取其SHA1码。不幸的是,这是今天(post 的时间)你得到 API.

返回的 SHA1 哈希码的唯一地方

一个非常简单的处理方法是在加载模型后自己标记模型,这是我在我的应用程序中的做法:

const onModelLoaded = (model) => {

      model.guid = guid()
}

viewer.loadModel(path, loadOption, onModelLoaded)

这是我对 guid() 函数的实现:

guid (format = 'xxxxxxxxxxxx') {

  var d = new Date().getTime()

  const guid = format.replace(
    /[xy]/g,
    function (c) {
      var r = (d + Math.random() * 16) % 16 | 0
      d = Math.floor(d / 16)
      return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16)
    })

  return guid
}

这只是一个示例,您可以将 guid 替换为来自数据库记录或其他来源的某个值。我假设您知道加载时模型的来源。