threejs -- 文本制成精灵贴图(弹幕效果)

本文介绍了如何使用ThreeJS创建文本精灵贴图,实现类似弹幕的效果。通过代码示例展示了具体实现步骤,并提到了input标签与OrbitControls.js的不兼容问题,引用了相关博客资源作为参考。

效果:
在这里插入图片描述
代码:

注:input标签不能与OrbitControls.js共同使用

<html lang="en">

<head>
    <title>three.js canvas - text - sprites</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <style>
        body {
            background-color: #000000;
            margin: 0px;
            overflow: hidden;
        }

        a {
            color: #0078ff;
        }

        @media screen and (max-width: 600px) {
            html {
                font-size: 6px;
            }
        }

        html {
            font-size: 10px;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .controls {
            width: 40rem;
            height: 20rem;
            border: 0.2rem solid #88f;
            border-radius: 0.5rem;
            position: fixed;
            bottom: 1rem;
            left: 50%;
            margin-left: -20rem;
            background-color: rgba(155, 155, 255, 0.1);

        }

        #danmuInput {
            width: 30rem;
            font-size: 2rem;
            text-align: center;
            background-color: rgba(155, 155, 255, 0.6);
            color: white;
            height: 3.8rem;
            line-height: 3.8rem;
            margin: 4rem 0 0 5rem;
            border: 0.1rem solid rgba(200, 200, 255, 0.3);
        }

        #danmuInput:focus {
            border: 0.1rem solid rgba(200, 200, 255, 0.9);
            box-shadow: none;
            outline: none;
            box-shadow: 0 0 0.2rem 0.1rem rgba(200, 200, 255, 0.9);
        }

        .controls button {
            position: absolute;
            width: 20rem;
            height: 4rem;
            bottom: 2rem;
            left: 50%;
            margin-left: -10rem;
            background-color: rgba(0, 0, 0, 0);
            color: white;
            font-size: 2rem;
            text-shadow: 0 0 5px #fff;
        }

        .controls button:hover {
            cursor: pointer;
            backgr
threejs - miniprogram 中,加载不同格式的贴图存在多方面区别,下面详细介绍常见贴图格式的特点和差异: ### JPEG(.jpg/.jpeg) JPEG 是一种有损压缩的图像格式,它的优势在于能以较小的文件大小存储图像,因此加载速度较快,适用于对画质要求不是极高的场景,如大面积的背景贴图等。不过,由于是有损压缩,在压缩过程中会丢失部分图像细节,当对图像质量要求较高时,可能会出现模糊、锯齿等问题。 ```javascript // 加载 JPEG 格式贴图示例 const textureLoader = new THREE.TextureLoader(); const jpegTexture = textureLoader.load('path/to/your/image.jpg'); ``` ### PNG(.png) PNG 是无损压缩的图像格式,能完美保留图像的所有细节,支持透明通道,这使得它非常适合用于需要显示透明效果贴图,比如游戏中的角色头像、图标等。但无损压缩也导致其文件大小通常比 JPEG 大,加载时间相对较长,对性能有一定影响。 ```javascript // 加载 PNG 格式贴图示例 const textureLoader = new THREE.TextureLoader(); const pngTexture = textureLoader.load('path/to/your/image.png'); ``` ### HDR(.hdr) HDR 格式用于存储高动态范围的图像,包含了比普通图像更多的亮度和颜色信息。在 threejs - miniprogram 中,HDR 贴图常用于创建逼真的环境光照效果,如反射、折射等。不过,HDR 贴图的文件体积较大,加载和处理时需要更多的内存和计算资源。 ```javascript // 加载 HDR 格式贴图示例 const rgbeLoader = new THREE.RGBELoader(); rgbeLoader.load('path/to/your/image.hdr', (envMap) => { scene.environment = envMap; }); ``` ### GIF(.gif) GIF 是一种支持动画的图像格式,在 threejs - miniprogram 中可以用于创建动态的贴图效果。但 GIF 的色彩深度有限,通常只有 256 种颜色,图像质量相对较低,且文件大小可能会因为动画帧数的增加而变大。 ```javascript // 加载 GIF 格式贴图示例 // 需要借助第三方库来处理 GIF 动画 // 这里只是示意,实际使用需要额外配置 const gifTexture = loadGifTexture('path/to/your/image.gif'); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值