따라서 동일한 글꼴을 사용하여 20 개의 텍스트 블록을 만들고 싶습니다.
새 TextGeometry는 글꼴이 아직로드되지 않은 경우 오류를 보냅니다.
현재 나는
new THREE.TextGeometry(this.text, {
font: Object(response) as THREE.Font
} as THREE.TextGeometryParameters);
내부 :
let fontLoader = new THREE.FontLoader();
fontLoader.load('/fonts/my_font.json', response => {
이 방법은 글꼴이 20 회 (새 텍스트마다 한 번씩)로드되기 때문에 매우 비효율적입니다. 실행 속도가 느려집니다 (테스트를 할 때 짜증이납니다).
글꼴을 한 번만로드하고 var에 저장하고 싶지만 TextGeometry를 생성하기 위해로드 될 때까지 기다리는 방법을 모르겠습니다.
나는 그것이 Observables와 관련이 있다고 생각합니까?
대단히 감사합니다.
예를 들어 다음과 같이 할 수 있습니다.
var manager = new THREE.LoadingManager();
manager.onLoad = function() { // when all resources are loaded
init();
render();
}
var font = null;
var loader = new THREE.FontLoader(manager);
loader.load('https://threejs.org/examples/fonts/droid/droid_serif_bold.typeface.json', function(response) {
font = response;
});
그리고 init()
:
function init(){
// create instances of scene, camera and renderer
...
function setText(text, position) { // actually, here you can have any parameters you want for your text
textGeo = new THREE.TextGeometry(text, {
font: font,...
}
}
주요 아이디어는 모든 리소스를 먼저, 나머지는 나중에하는 것입니다.
jsfiddle 예
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다