<script src="three.js">script>
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(, window.innerWidth / window.innerHeight, 0.1, );
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const loader = new THREE.GLTFLoader();
loader.load('model.gltf', function(gltf) {
scene.add(gltf.scene);
});
const mesh = gltf.scene.getObjectByName('modelMesh');
const material = mesh.material;
const colorPicker = document.getElementById('colorPicker');
colorPicker.addEventListener('change', function(e) {
const color = new THREE.Color(e.target.value);
material.color.set(color);
});
const shininessSlider = document.getElementById('shininessSlider');
shininessSlider.addEventListener('input', function(e) {
material.shininess = parseInt(e.target.value);
});
const opacitySlider = document.getElementById('opacitySlider');
opacitySlider.addEventListener('input', function(e) {
material.opacity = parseFloat(e.target.value);
material.transparent = true;
});
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5); // 白色环境光,强度 0.5
scene.add(ambientLight);
const ambientColorPicker = document.getElementById('ambientColorPicker');
const ambientIntensitySlider = document.getElementById('ambientIntensitySlider');
ambientColorPicker.addEventListener('change', function(e) {
const color = new THREE.Color(e.target.value);
ambientLight.color.set(color);
});
ambientIntensitySlider.addEventListener('input', function(e) {
ambientLight.intensity = parseFloat(e.target.value);
});
const pointLight = new THREE.PointLight(0xffffff, 1.0);
pointLight.position.set(, , ); // 光源位置
scene.add(pointLight);
const pointXSlider = document.getElementById('pointXSlider');
const pointYSlider = document.getElementById('pointYSlider');
const pointZSlider = document.getElementById('pointZSlider');
pointXSlider.addEventListener('input', function(e) {
pointLight.position.x = parseFloat(e.target.value);
});
pointYSlider.addEventListener('input', function(e) {
pointLight.position.y = parseFloat(e.target.value);
});
pointZSlider.addEventListener('input', function(e) {
pointLight.position.z = parseFloat(e.target.value);
});
const directionalLight = new THREE.DirectionalLight(0xffffff, 1.0);
directionalLight.position.set(-, , ).normalize(); // 光源方向
scene.add(directionalLight);
const directionalIntensitySlider = document.getElementById('directionalIntensitySlider');
const directionalXSlider = document.getElementById('directionalXSlider');
const directionalYSlider = document.getElementById('directionalYSlider');
const directionalZSlider = document.getElementById('directionalZSlider');
directionalIntensitySlider.addEventListener('input', function(e) {
directionalLight.intensity = parseFloat(e.target.value);
});
directionalXSlider.addEventListener('input', function(e) {
directionalLight.position.x = parseFloat(e.target.value);
directionalLight.position.normalize();
});
// 类似的,给 y 和 z 轴的滑动条添加事件监听
let isAdjusting = false;
// 在滑动条的 input 事件开始时设置为 true
// 在 input 事件结束时设置为 false,这里可以用 setTimeout 来判断用户是否停止操作
function updateRendererResolution() {
if (isAdjusting) {
renderer.setPixelRatio(window.devicePixelRatio * 0.5); // 半分辨率
} else {
renderer.setPixelRatio(window.devicePixelRatio); // 原始分辨率
}
}
📈 公众号阅读量飙涨,收益真的能跟着飞? 做公众号的都知道,阅读量是个磨人的小妖精。看着后台数字噌噌往上涨,心里那叫一个美。但你有没有想过,这数字背后藏着多少门道? 有人说阅读量就是钱袋子,这话不假
🔍 公众号 10000 阅读量收入有多少?深度剖析流量主与广告变现效率 做公众号的朋友都知道,阅读量是衡量内容影响力的重要指标,但到底 10000 阅读量能带来多少真金白银?这个问题没有标准答案,因
🛠️ 精准定位内容:让用户主动打开的核心驱动力公众号被折叠,说白了就是用户觉得你的内容不再像以前那么重要了。现在的用户关注的公众号太多,微信把它们都收进了折叠栏,这其实是在帮用户做筛选。那怎么让用
? 写情感文案,最怕的不是没词儿,是 “情绪没踩对点儿” 你是不是也遇到过这种情况?想写一段关于暗恋的文案,憋了半小时就写出 “我喜欢你” 四个字,干巴巴的像块石头;或者写亲情文案,总绕不开 “妈妈的
?双机位布置:打造360°无死角面试环境力扣模拟面试的双机位要求让不少同学犯难,其实把它想象成给电脑装个「监控搭档」就简单了。主机位就是咱们平时用的电脑摄像头,记得调整到能露出整张脸和桌面的角度——下巴别藏在阴影里,键盘也别只露出半个。副机位一般用手机支架固定,放在身体侧后方45度角,这个位置既能拍
?精准提分黑科技!ExamifyAI如何重塑2025考试备考模式?一、核心功能大揭秘:AI如何让考试准备更高效?ExamifyAI作为新一代智能考试平台,最吸引人的地方就是它的自适应学习引擎。这个系统就像一个贴心的私人教练,能根据你的答题数据自动调整学习路径。比如你在数学几何题上错误率高,系统会优先
上周帮同事核查一篇AI写的行业报告,发现里面把2023年的用户增长率写成了2025年的预测数据。更离谱的是,引用的政策文件号都是错的。现在AI生成内容速度快是快,但这种硬伤要是直接发出去,读者信了才真叫坑人。今天就掰开揉碎了说,AI写作怎么做好事实核查,别让你的头条文章变成 误导重灾区 。📌AI写
🎯维度一:选题像打靶,靶心必须是「用户情绪储蓄罐」做内容的都清楚,10w+爆文的第一步不是写,是选。选题选不对,后面写得再好都是白搭。高手选选题,就像往用户的「情绪储蓄罐」里投硬币,投对了立刻就能听到回响。怎么判断选题有没有击中情绪?看三个指标:是不是高频讨论的「街头话题」?是不是藏在心里没说的「抽
📌135编辑器会员值不值得买?AI模板库和秀米H5谁更胜一筹?🔍135编辑器会员的核心价值解析企业级商用保障与效率提升135编辑器的企业会员堪称新媒体运营的「合规保险箱」。根据实际案例,某团队通过企业会员节省了大量设计费用,完成多篇内容创作,单篇成本从千元降至百元内。这得益于其海量正版模板和素材库,
新公众号被限流怎么办?粉丝增长影响分析及2025恢复指南🔍新公众号限流的核心原因解析新公众号被限流,往往是多个因素叠加的结果。根据2025年最新数据,超过70%的限流案例与内容质量直接相关。比如,有些新手喜欢用“震惊体”标题,像“惊!某公众号三天涨粉十万”,这类标题在2025年的算法里已经被明确标记
⚠️AI内容重复率高的3大核心原因现在用AI写东西的人越来越多,但很多人都会遇到同一个问题——重复率太高。明明是自己用工具生成的内容,一检测却显示和网上某些文章高度相似,这到底是为什么?最主要的原因是AI训练数据的重叠性。不管是ChatGPT还是国内的大模型,训练数据来源其实大同小异,都是爬取的互联
🌟135编辑器:公众号运营者的效率革命做公众号运营的朋友都知道,排版是个费时费力的活。一篇文章从内容到排版,没几个小时根本搞不定。不过现在好了,135编辑器的出现,彻底改变了这一现状。135编辑器是提子科技旗下的在线图文排版工具,2014年上线至今,已经成为国内新媒体运营的主流工具之一。它的功能非常
🔍朱雀AI检测抗绕过方法:2025最新技术解析与实测对比🔍在AI生成内容泛滥的今天,腾讯朱雀AI检测系统凭借其多模态分析技术和百万级数据训练,成为行业标杆。但道高一尺魔高一丈,对抗者们正通过各种技术手段挑战其检测边界。本文将深入解析2025年最新的抗绕过方法,并结合实测数据对比效果。🛠️技术架构解析
🔍CopyLeaks:看似全能的免费选手CopyLeaks算是免费AI检测工具里名气不小的。它支持Word、PDF这些常见文件格式,甚至连图片里的文字都能提取出来检测。语言方面也挺厉害,中英日韩这些主流语言都能hold住。但免费版真的不够用,单篇检测最多就500字,稍微长点的文章就得切好几段。而