three.js渲染中文的3D字体

下载中文字体 引入下面的代码

点击下载
提取码: lywa

<!DOCTYPE html>
<html lang="en"><head><title>three.js webgl - modifier - tessellation</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"><link type="text/css" rel="stylesheet" href="main.css"></head><body><div id="container"></div><script type="x-shader/x-vertex" id="vertexshader">uniform float amplitude;attribute vec3 customColor;attribute vec3 displacement;varying vec3 vNormal;varying vec3 vColor;void main() {vNormal = normal;vColor = customColor;vec3 newPosition = position + normal * amplitude * displacement;gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );}</script><script type="x-shader/x-fragment" id="fragmentshader">varying vec3 vNormal;varying vec3 vColor;void main() {const float ambient = 0.4;vec3 light = vec3( 1.0 );light = normalize( light );float directional = max( dot( vNormal, light ), 0.0 );gl_FragColor = vec4( ( directional + ambient ) * vColor, 1.0 );}</script><script type="importmap">{"imports": {"three": "../build/three.module.js","three/addons/": "./jsm/"}}</script><script type="module">import * as THREE from 'three';import Stats from 'three/addons/libs/stats.module.js';import { TrackballControls } from 'three/addons/controls/TrackballControls.js';import { TessellateModifier } from 'three/addons/modifiers/TessellateModifier.js';import { FontLoader } from 'three/addons/loaders/FontLoader.js';import { TextGeometry } from 'three/addons/geometries/TextGeometry.js';let renderer, scene, camera, stats;let controls;let mesh, uniforms;const WIDTH = window.innerWidth;const HEIGHT = window.innerHeight;const loader = new FontLoader();loader.load( 'fonts/Microsoft YaHei_Regular.json', function ( font ) {init( font );} );function init( font ) {camera = new THREE.PerspectiveCamera( 40, WIDTH / HEIGHT, 1, 10000 );camera.position.set( - 100, 100, 200 );scene = new THREE.Scene();scene.background = new THREE.Color( 0x050505 );//let geometry = new TextGeometry( '周杰伦', {font: font,size: 40,depth: 5,curveSegments: 3,bevelThickness: 2,bevelSize: 1,bevelEnabled: true} );geometry.center();const tessellateModifier = new TessellateModifier( 8, 6 );geometry = tessellateModifier.modify( geometry );//const numFaces = geometry.attributes.position.count / 3;const colors = new Float32Array( numFaces * 3 * 3 );const displacement = new Float32Array( numFaces * 3 * 3 );const color = new THREE.Color();for ( let f = 0; f < numFaces; f ++ ) {const index = 9 * f;const h = 0.2 * Math.random();const s = 0.5 + 0.5 * Math.random();const l = 0.5 + 0.5 * Math.random();color.setHSL( h, s, l );const d = 10 * ( 0.5 - Math.random() );for ( let i = 0; i < 3; i ++ ) {colors[ index + ( 3 * i ) ] = color.r;colors[ index + ( 3 * i ) + 1 ] = color.g;colors[ index + ( 3 * i ) + 2 ] = color.b;displacement[ index + ( 3 * i ) ] = d;displacement[ index + ( 3 * i ) + 1 ] = d;displacement[ index + ( 3 * i ) + 2 ] = d;}}geometry.setAttribute( 'customColor', new THREE.BufferAttribute( colors, 3 ) );geometry.setAttribute( 'displacement', new THREE.BufferAttribute( displacement, 3 ) );//uniforms = {amplitude: { value: 0.0 }};const shaderMaterial = new THREE.ShaderMaterial( {uniforms: uniforms,vertexShader: document.getElementById( 'vertexshader' ).textContent,fragmentShader: document.getElementById( 'fragmentshader' ).textContent} );//mesh = new THREE.Mesh( geometry, shaderMaterial );scene.add( mesh );renderer = new THREE.WebGLRenderer( { antialias: true } );renderer.setPixelRatio( window.devicePixelRatio );renderer.setSize( WIDTH, HEIGHT );renderer.setAnimationLoop( animate );const container = document.getElementById( 'container' );container.appendChild( renderer.domElement );controls = new TrackballControls( camera, renderer.domElement );stats = new Stats();container.appendChild( stats.dom );//window.addEventListener( 'resize', onWindowResize );}function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight );}function animate() {render();stats.update();}function render() {const time = Date.now() * 0.001;uniforms.amplitude.value = 1.0 + Math.sin( time * 0.5 );controls.update();renderer.render( scene, camera );}</script></body></html>

结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chapter08-面向对象编程——(章节内容梳理)——day10

目录 快捷键 访问修饰符 封装 继承 方法重写 多态 快捷键 访问修饰符 封装 继承 本质 方法重写 多态 编译类型、运行类型、动态绑定机制

如何下载西门子电气元件EPLAN EDZ文件以及CAD文件等?

如何下载西门子电气元件EPLAN EDZ文件以及CAD文件等? 西门子全球电子商务: https://mall.industry.siemens.com/goos/WelcomePage.aspx?regionUrl=/cn&language=zh 西门子Industry Image Database: https://www.automation.siemens.com/bilddb/index.aspx?lang=en 以…

【Scala】Windows下安装Scala(全面)

1.下载 官网下载地址&#xff1a;https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi 2.安装 双击下载的.msi文件&#xff1a; 勾选"I accept the terms in the License Agreement",然后点击下一步 修改自己的安装路径&#xff1a; 然后选择brow…

快讯 | Midjourney开拓硬件领域:苹果前经理加盟助力发展

硅纪元快讯栏目&#xff0c;每日追踪AI领域的最新动态&#xff0c;快速汇总最新科技新闻&#xff0c;助您时刻紧跟行业趋势。简明扼要的呈现资讯概要&#xff0c;让您快速了解前沿资讯。 1分钟速览新闻 Claude AI 聊天机器人性能下滑引争议 中国能源化工行业首个330亿参数昆仑…

vagrant 创建虚拟机

创建一个名为 “Vagrantfile” 的文件&#xff0c;修改如下内容&#xff1a; Vagrant.configure("2") do |config|(1..3).each do |i|config.vm.define "k8s-node#{i}" do |node|# 设置虚拟机的Boxnode.vm.box "centos/7"# 设置虚拟机的主机名…

大模型时代,算法工程师的黄金时代

在大模型时代&#xff0c;算法工程师的角色已经超越了传统的编程和算法优化&#xff0c;他们成为了推动技术革新和业务发展的关键力量。作为一名算法工程师&#xff0c;我深刻地感受到这个时代对我们的新要求和期待。回想起我刚刚踏入这个领域时&#xff0c;深度学习还只是少数…

一文全面了解机房动环监控系统/机房环控方案@卓振思众

机房动环监控是一个综合的动力与环境监控系统&#xff0c;主要用于确保机房设备和环境的稳定运行。机房动环监控作为保障数据中心正常运行的重要系统&#xff0c;其重要性不言而喻。在当前信息化、数字化时代背景下&#xff0c;各种业务的数字化转型要求数据中心必须具备高度的…

九盾安防提供的叉车警报灯蜂鸣器

随着物流行业的快速发展&#xff0c;叉车作为重要的物料搬运设备&#xff0c;其安全性日益受到重视。叉车警报灯蜂鸣器作为一种重要的安全装置&#xff0c;能够有效提醒操作人员和周边人员注意叉车动向&#xff0c;避免潜在的安全隐患。因此&#xff0c;市场需求量逐年上升&…

偷偷用了这10款AI写作神器,再也没加过班!

前言 [ 自2022年Chat-GPT在全球掀起AI革命浪潮&#xff0c;AI开始在内容的生产方式进行颠覆性改变。 其中&#xff0c;AI写作工具的崛起&#xff0c;为内容创作者打开了一个全新创作世界&#xff0c;无论用户在办公写作、自媒体写作还是兴趣写作&#xff0c;在效率方面都得到…

开学季有什么必买好物?2024数码好物清单大合集!

随着新学期的到来&#xff0c;相信很多学生都在准备迎接新的挑战和机遇。在这个充满活力的开学季&#xff0c;为了更好地适应学习和校园生活&#xff0c;挑选一些实用又高效的数码好物是非常必要的。不仅可以提高学习效率的工具&#xff0c;还可以提升生活质量&#xff0c;接下…

商用车ADAS风口再起!极目智能发布行业首款商用车舱驾一体域控

商用车ADAS相关强制法规再升级&#xff0c;新一轮技术方案迭代周期已然来临。 2024年5月&#xff0c;交通部陆续发布针对AEBS的征求意见稿(JT/T1178.1/1178.2/1285/1094)&#xff0c;要求所有3.5吨以上的营运车辆强制安装AEBS系统&#xff0c;该意见稿预计2024年年底发布。 今…

16002.orin nano平台 linux gpio 学习记录

文章目录 1 查看当前系统gpio配置信息2 orin / nano gpio2.1 GPIO 映射表2.2 nano 平台对外提供的2排端口表 3 配置GPIO 电平3.1 通过指令配置普通GPIO高电平3.2 通过设备树配置普通GPIO高电平3.3 配置特定 gpio 高电平 1 查看当前系统gpio配置信息 sudo cat /sys/kernel/debu…

FPGA实现HDMI传输(二)

之前的文章简单介绍了HDMI接口、TMDS编码以及ADV611工作原理和寄存器配置&#xff0c;本篇博客将给出具体的代码以及板级验证结果&#xff0c;代码参考自米联客的教程。 一.ADV7611配置 1.i2c驱动模块 timescale 1ns / 1psmodule uii2c# (parameter WMEN_LEN …

JVM对象创建和内存分配机制深度解析

一、对象创建方式 1、new关键字 这是最常见的创建对象的方式。通过调用类的构造方法&#xff08;constructor&#xff09;来创建对象。如&#xff1a;MyClass obj new MyClass()。这种方式会触发类的加载、链接、初始化过程&#xff08;如果类还未被加载过的话&#xff09;&…

ComfyUI SDXL Prompt Styler 简介

SDXL Prompt Styler 来自于 comfyui-art-venture 节点 style 已经更新 旧版本的 sai-line art 变更为 line art log_prompt 已经更新 旧版本的 false 变更为 Yes 或 No style_name 已经更新 旧版本的 true &#xff08;不再适用&#xff09;&#xff08;可以尝试对应style中…

亲测好用,ChatGPT 3.5/4.0新手使用手册,最全论文指令手册~ 【2024年9月 更新】

本以为遥遥领先的GPT早就普及了&#xff0c;但小伙伴寻找使用的热度一直高居不下&#xff0c;其实现在很简单了&#xff01; 国产大模型快200家了&#xff0c;还有很多成熟的国内AI产品&#xff0c;跟官网一样使用&#xff0c;还更加好用~ ① 3.5 大多数场景是够用的&#xff…

Web大学生网页作业成品——VIVO介绍网页设计与实现(HTML+CSS)(1个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

基于大数据分析景区消费行为影响因素研究【消费等级预测、携程,去哪网数据抓取】

有需要本项目的可以私信博主&#xff0c;讲解、部署 目录 摘要.... 1 Abstract 2 1引言... 3 1.1 研究背景... 3 1.2 国内外研究现状... 4 1.3 研究目的... 5 1.4 研究意义... 6 2 关键技术理论介绍... 7 2.1 网络爬虫... 7 2.2 Python介绍... 8 2.3 随机森林... 9…

[数据集][目标检测]光伏发电板红外图像鸟粪检测数据集VOC+YOLO格式173张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;173 标注数量(xml文件个数)&#xff1a;173 标注数量(txt文件个数)&#xff1a;173 标注类别…

JAVA国际版同城货运搬家货拉拉货运车系统小程序H5+APP源码

&#x1f31f;【全球搬家新宠儿】国际版同城货运&搬家神器——货拉拉货运车系统&#x1f69a; &#x1f30d; 跨国搬家不再难&#xff0c;货拉拉国际版来助力&#xff01; 你是否曾为跨国搬家而头疼不已&#xff1f;行李堆积如山&#xff0c;物流信息错综复杂&#xff0c…