如何在 Three.js 中加载文件八位字节流 3d 模型
How to load file octet-stream 3d model in Three.js
我将模型 .glb 加载到 s3 服务,然后我从 s3 得到 url 是 https://test-image-prevaa-123.s3.amazonaws.com/test/1626336255367.octet-stream
。如何将模型从 url 加载到 three.js。我从我的代码加载然后模型不显示。我是 three.js 的新手。我在控制台中收到此错误 Unexpected token g in JSON at position 0
我猜是在我将 .glb 文件上传到 s3 服务后,文件更改为 .octet-stream。我不确定如何将 .octet-stream 加载到 three.js。谢谢你的建议。我不确定将 .octet-stream 模型加载到 three.js
我的代码
const data = this
const loaderFile = new THREE.FileLoader()
loaderFile.load(newFile, async function (file) {
const loader = new GLTFLoader()
loader.parse(file, '', function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})
})
您可以像加载其他任何内容一样加载 url -- 它只是 returns GLTF 文件的内容。但是,假设“newFile”是您发布的 url,您的代码中有几处需要更改。
如果您希望使用 FileLoader
,您需要将 responseType 设置为 arraybuffer
,这是 GLTFLoader.parse 所期望的(参见 GLTFLoader Docs):
const data = this
const loaderFile = new THREE.FileLoader()
// added this line:
loaderFile.setResponseType( 'arraybuffer' )
loaderFile.load(newFile, async function (file) {
const loader = new GLTFLoader()
loader.parse(file, '', function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})
})
或者您可以完全跳过使用 FileLoader
并直接使用 GLTFLoader.load
:
const data = this
const loader = new GLTFLoader();
loader.load(newFile, function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})
我将模型 .glb 加载到 s3 服务,然后我从 s3 得到 url 是 https://test-image-prevaa-123.s3.amazonaws.com/test/1626336255367.octet-stream
。如何将模型从 url 加载到 three.js。我从我的代码加载然后模型不显示。我是 three.js 的新手。我在控制台中收到此错误 Unexpected token g in JSON at position 0
我猜是在我将 .glb 文件上传到 s3 服务后,文件更改为 .octet-stream。我不确定如何将 .octet-stream 加载到 three.js。谢谢你的建议。我不确定将 .octet-stream 模型加载到 three.js
我的代码
const data = this
const loaderFile = new THREE.FileLoader()
loaderFile.load(newFile, async function (file) {
const loader = new GLTFLoader()
loader.parse(file, '', function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})
})
您可以像加载其他任何内容一样加载 url -- 它只是 returns GLTF 文件的内容。但是,假设“newFile”是您发布的 url,您的代码中有几处需要更改。
如果您希望使用 FileLoader
,您需要将 responseType 设置为 arraybuffer
,这是 GLTFLoader.parse 所期望的(参见 GLTFLoader Docs):
const data = this
const loaderFile = new THREE.FileLoader()
// added this line:
loaderFile.setResponseType( 'arraybuffer' )
loaderFile.load(newFile, async function (file) {
const loader = new GLTFLoader()
loader.parse(file, '', function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})
})
或者您可以完全跳过使用 FileLoader
并直接使用 GLTFLoader.load
:
const data = this
const loader = new GLTFLoader();
loader.load(newFile, function (glb) {
const mesh = glb.scene
mesh.scale.set(2, 2, 2)
data.scene.add(mesh)
data.animate(mesh)
})