three.module.js:38595 在 THREE.js 中获取 http://192.168.8.104:8080/[object%20Object] 404(未找到)
three.module.js:38595 GET http://192.168.8.104:8080/[object%20Object] 404 (Not Found) in THREE.js
试图在 THREE.js 中创建一个文本加载器,但我遇到了一个错误,而不是我创建的文本
three.module.js:38595 GET http://192.168.8.104:8080/[object%20Object] 404 (Not Found)
这个错误来了,我尽力解决了,但我找不到任何解决方案
这是我之前的问题 link Text Loader is not loading in THREE.js
import "./style.css";
import * as THREE from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
import * as dat from "dat.gui";
import { FontLoader } from "three/examples/jsm/loaders/FontLoader.js";
import { TextGeometry } from "three/examples/jsm/geometries/TextGeometry.js";
import typefaceFont from "./fonts/helvetiker_regular.typeface.json";
/**
* Fonts
*/
const fontLoader = new FontLoader();
fontLoader.load(typefaceFont, (font) => {
const textMaterial = new THREE.MeshBasicMaterial();
const textGeometry = new TextGeometry("Hello Three.js",
{
font: font,
size: 0.5,
height: 0.2,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 0.03,
bevelSize: 0.02,
beveloffset: 0,
bevelSegments: 5
}
);
const text = new THREE.Mesh(textGeometry, textMaterial);
scene.add(text);
});
/**
* Base
*/
// Debug
const gui = new dat.GUI();
// Canvas
const canvas = document.querySelector("canvas.webgl");
// Scene
const scene = new THREE.Scene();
/**
* Textures
*/
const textureLoader = new THREE.TextureLoader();
/**
* Object
*/
// const cube = new THREE.Mesh(
// new THREE.BoxGeometry(1, 1, 1),
// new THREE.MeshBasicMaterial()
// )
//scene.add(cube)
/**
* Sizes
*/
const sizes = {
width: window.innerWidth,
height: window.innerHeight,
};
window.addEventListener("resize", () => {
// Update sizes
sizes.width = window.innerWidth;
sizes.height = window.innerHeight;
// Update camera
camera.aspect = sizes.width / sizes.height;
camera.updateProjectionMatrix();
// Update renderer
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
});
/**
* Camera
*/
// Base camera
const camera = new THREE.PerspectiveCamera(
75,
sizes.width / sizes.height,
0.1,
100
);
camera.position.x = 1;
camera.position.y = 1;
camera.position.z = 2;
scene.add(camera);
// Controls
const controls = new OrbitControls(camera, canvas);
controls.enableDamping = true;
/**
* Renderer
*/
const renderer = new THREE.WebGLRenderer({
canvas: canvas,
});
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
/**
* Animate
*/
const clock = new THREE.Clock();
const tick = () => {
const elapsedTime = clock.getElapsedTime();
// Update controls
controls.update();
// Render
renderer.render(scene, camera);
// Call tick again on the next frame
window.requestAnimationFrame(tick);
};
tick();
你的问题就在你的错误中。
http://192.168.8.104:8080/[object%20Object]
这意味着您将对象作为 URL 传递。这可以从线条中看出...
import typefaceFont from "./fonts/helvetiker_regular.typeface.json";
fontLoader.load(typefaceFont, (font) => {
//...
});
您正在 import
创建一个 JSON 文件,然后将导入的值传递给 load
函数。
假设您使用的是捆绑器(webpack、rollup、parcel 等),import
将数据作为 Object
引入。
但是,load
期望 URL 作为 String
。
要正确使用字体加载器,删除 import
并传递 URL 字符串:
fontLoader.load("./fonts/helvetiker_regular.typeface.json", (font) => {
//...
});
试图在 THREE.js 中创建一个文本加载器,但我遇到了一个错误,而不是我创建的文本
three.module.js:38595 GET http://192.168.8.104:8080/[object%20Object] 404 (Not Found)
这个错误来了,我尽力解决了,但我找不到任何解决方案 这是我之前的问题 link Text Loader is not loading in THREE.js
import "./style.css";
import * as THREE from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
import * as dat from "dat.gui";
import { FontLoader } from "three/examples/jsm/loaders/FontLoader.js";
import { TextGeometry } from "three/examples/jsm/geometries/TextGeometry.js";
import typefaceFont from "./fonts/helvetiker_regular.typeface.json";
/**
* Fonts
*/
const fontLoader = new FontLoader();
fontLoader.load(typefaceFont, (font) => {
const textMaterial = new THREE.MeshBasicMaterial();
const textGeometry = new TextGeometry("Hello Three.js",
{
font: font,
size: 0.5,
height: 0.2,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 0.03,
bevelSize: 0.02,
beveloffset: 0,
bevelSegments: 5
}
);
const text = new THREE.Mesh(textGeometry, textMaterial);
scene.add(text);
});
/**
* Base
*/
// Debug
const gui = new dat.GUI();
// Canvas
const canvas = document.querySelector("canvas.webgl");
// Scene
const scene = new THREE.Scene();
/**
* Textures
*/
const textureLoader = new THREE.TextureLoader();
/**
* Object
*/
// const cube = new THREE.Mesh(
// new THREE.BoxGeometry(1, 1, 1),
// new THREE.MeshBasicMaterial()
// )
//scene.add(cube)
/**
* Sizes
*/
const sizes = {
width: window.innerWidth,
height: window.innerHeight,
};
window.addEventListener("resize", () => {
// Update sizes
sizes.width = window.innerWidth;
sizes.height = window.innerHeight;
// Update camera
camera.aspect = sizes.width / sizes.height;
camera.updateProjectionMatrix();
// Update renderer
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
});
/**
* Camera
*/
// Base camera
const camera = new THREE.PerspectiveCamera(
75,
sizes.width / sizes.height,
0.1,
100
);
camera.position.x = 1;
camera.position.y = 1;
camera.position.z = 2;
scene.add(camera);
// Controls
const controls = new OrbitControls(camera, canvas);
controls.enableDamping = true;
/**
* Renderer
*/
const renderer = new THREE.WebGLRenderer({
canvas: canvas,
});
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
/**
* Animate
*/
const clock = new THREE.Clock();
const tick = () => {
const elapsedTime = clock.getElapsedTime();
// Update controls
controls.update();
// Render
renderer.render(scene, camera);
// Call tick again on the next frame
window.requestAnimationFrame(tick);
};
tick();
你的问题就在你的错误中。
http://192.168.8.104:8080/[object%20Object]
这意味着您将对象作为 URL 传递。这可以从线条中看出...
import typefaceFont from "./fonts/helvetiker_regular.typeface.json";
fontLoader.load(typefaceFont, (font) => {
//...
});
您正在 import
创建一个 JSON 文件,然后将导入的值传递给 load
函数。
假设您使用的是捆绑器(webpack、rollup、parcel 等),import
将数据作为 Object
引入。
但是,load
期望 URL 作为 String
。
要正确使用字体加载器,删除 import
并传递 URL 字符串:
fontLoader.load("./fonts/helvetiker_regular.typeface.json", (font) => {
//...
});