Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

174
Visualizações
Uso de THREE.js CSS2DRenderer para colocar elementos HTML desde la parte superior izquierda

El CSS2DRenderer me permite colocar un elemento HTML en una escena en función de una posición 3D, que a su vez puede corresponder a algún objeto colocado en la escena 3D. Por ejemplo, puedo hacer:

 const mesh; // <some other mesh in the scene> const el = document.createElement('div') el.innerHTML = 'hello world' const objectCSS = new CSS2DObject(el) objectCSS.position.set(0, 0, 0) mesh.add(objectCSS)

Esto colocará el hello world div directamente centrado en la malla, por ejemplo

 _________________ | | | hello world | |_______________|

¿Cómo podría cambiar las coordenadas del hello world div para que se coloque con respecto a la parte superior izquierda del div, en lugar de con respecto al centro del div? p.ej

 _________________ | | | hello world |_______________|

EDITAR: tenga en cuenta que el objetivo no es solo compensar el texto. Quiero cambiar la alineación. Entonces, por ejemplo, si solo estuviera tratando de compensar, más texto se vería así:

 _________________ | | | hello world blah blah blah |_______________|

donde cambiar la alineación se vería así

 _________________ | | | hello world blah blah blah |_______________|
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si establece una posición en objectCSS , se aplicará como un desplazamiento de la malla.

Prueba: objectCSS.position.set(10, 0, 0)

Consulte este ejemplo para obtener más detalles: https://threejs.org/examples/#css2d_label

Específicamente en esta línea: https://github.com/mrdoob/three.js/blob/master/examples/css2d_label.html#L132

about 4 years ago · Juan Pablo Isaza Relatório

0

Terminé siendo capaz de hacer esto utilizando algunos contenedores div anidados. Mi código final terminó pareciéndose a esto:

 const mesh; // <some other mesh in the scene> // Create the relevant html elements. const el = document.createElement('div') const container = documnet.createElement('div'); const inner = document.createElmeent('div'); // Add styling. container.style.display = 'flex' container.style.flexDirection = 'column' container.style.width = 'fit-content' // needed to 'reset' the width calculations // Set the text. inner.innerHTML = 'HELLO WORLD' // Set the rest of the THREE object. const objectCSS = new CSS2DObject(el) objectCSS.position.set(0, 0, 0) objectCSS.element.style.overflow = 'visible' objectCSS.element.style.width = '1px' // I dont know if this is strictly needed objectCSS.element.style.height = '1px' mesh.add(objectCSS)
about 4 years ago · Juan Pablo Isaza Relatório

0

Me he encontrado con el mismo problema. Las líneas 131 o 135 en CSS2DRenderer se transforman para translate(-50%,-50%) para centrar el elemento html alrededor de la posición dada. Probablemente, la mejor solución sería tener algún tipo de control sobre esto al crear el CSS2DObject , ¿tal vez pasar un argumento de argumento opcional? ¿Valdría la pena hacer un PR?

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda