最新要闻
- DIY技巧:微星B760主板13600K降压教程 CPU温度暴降25℃
- 世界消息!专家称电动车要发展农村型号:支持反向充电 可增加收入
- 环球热门:1-2!“全校班”广州队又输了!3连败+开局5轮不胜,直冲降级区
- 天天观速讯丨安卓一年一迭代谷歌也累了:开始挤牙膏更新
- 女子把变心男友送的黄金卖了14万:没真心但有真金!自愿赠与或不用返还_天天快看
- 升级彩超5项:瑞慈体检套餐279元母亲节大促 今日热搜
- 久穿不易变形 放克220g宽松短袖29元大促
- 徐工四款新“国货之光”问世:百变狮王、自动灭火机器人 国产化率100% 世界观焦点
- 万胜智能: 关于使用部分闲置募集资金进行现金管理的进展公告
- 动态焦点:每天走路超这一步数 能大幅降低死亡率 上班族学起来
- B站“离谱”专利获批:开车也能发弹幕了?|新要闻
- 热议:俄媒:泽连斯基拒绝教皇方济各调解俄乌提议
- 想玩《塞尔达传说:王国之泪》却不知道买哪款Switch?这篇选购攻略帮你避坑!
- CPU散片学问大:碰见这两个型号千万别买|今日热搜
- 全球今亮点!西湖5平米商亭租金284万 每天约7780元引热议
- 母亲节 我来讲一个给妈妈换了“苹果全家桶”后的故事
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
three.js 入门学习(二) 环球热资讯
上一个小案例
import * as THREE from "three";=================================== const width = 960; const height = 540; // 渲染器 const renderer = new THREE.WebGLRenderer(); //设置像素 renderer.setPixelRatio(window.devicePixelRatio); // 设置大小 renderer.setSize(width, height); document.body.appendChild(renderer.domElement); // 视口 const scene = new THREE.Scene(); // 摄像头 const camera = new THREE.PerspectiveCamera(45, width / height, 1, 1000); camera.position.set(0, 0, 1000); // 一个网格物体 const geometry = new THREE.BoxGeometry(400, 400, 400); // 材质 法线网格材质(种把法向量射到RGB颜色的材质) const material = new THREE.MeshNormalMaterial(); const box = new THREE.Mesh(geometry, material); scene.add(box); function animate() { box.rotation.y += 0.01; // 渲染到页面上, 视口,摄像头 renderer.render(scene, camera); requestAnimationFrame(animate); } animate()
准备一个画布元素
WebGL 渲染的渲染器
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector("#myCanvas")});
在方法中setSize()
设置大小
renderer.setSize(960, 540);
创造一个场景
创建一个场景。场景是放置 3D 对象、光源等的 3D 空间。
const scene = new THREE.Scene();
相机
此功能称为“视点”或“相机”
(资料图)
在 Three.js 中,THREE.PerspectiveCamera
通过传递四个信息来创建相机:视角、纵横比、绘制开始距离和绘制结束距离,作为类构造函数中的参数。
const camera = new THREE.PerspectiveCamera(45, 960 / 540,1,1000);
## 立方体
网格的显示对象创建的。要创建网格,我们需要准备两种类型:几何体(shape)和材料(material)。
BoxGeometry
使用一种来生成像立方体和长方体这样的类似盒子的形状
const geometry = new THREE.BoxGeometry(500, 500, 500);
材质
法线网格材质(种把法向量射到RGB颜色的材质)MeshNormalMaterial
const material = new THREE.MeshNormalMaterial();
使用创建的几何体和材料创建网格。让我们将创建的网格添加到场景中。
const box = new THREE.Mesh(geometry, material);scene.add(box);
为了用 JavaScript 制作动画,有必要随着时间的推移不断调用该函数。为此,requestAnimationFrame()
请使用名为 requestAnimationFrame()
将运行每帧作为参数传递的函数。
tick();function tick() { requestAnimationFrame(tick);}
Three.js不会自动将屏幕切换到最新,所以需要写一个指令来显式更新屏幕。renderer.render()
您可以使用命令指定更新
tick();function tick() { requestAnimationFrame(tick); box.rotation.y += 0.01; renderer.render(scene, camera); }
创建 Three.js 对象分为三个步骤:(1) 创建材质,(2) 创建几何体,(3) 创建网格
// 球体const geometry = new THREE.SphereGeometry(300, 30, 30);// 物理材质的制作const material = new THREE.MeshStandardMaterial({color: 0xFF0000});// 网格物体const mesh = new THREE.Mesh(geometry, material);// 添加到场景中scene.add(mesh);
光源
THREE.DirectionalLight 平行光const directionalLight = new THREE.DirectionalLight(0xFFFFFF);directionalLight.position.set(1, 1, 1)scene.add(directionalLight);
环境光
它可以作为一盏灯来照亮整个空间。
THREE.AmbientLight
var pointLight = new THREE.PointLight("#ccffcc");pointLight.position.set(0,10,10);scene.add(pointLight);
材质中使用图像
THREE.TextureLoader
使用类指定文件路径
// 图像加载器 const loader = new THREE.TextureLoader(); const texture=loader.load("/assets/img/单人主体 (3).jpg") // 物理材质 const material2=new THREE.MeshStandardMaterial({ map: texture, })
球体集合
const geometry = new THREE.SphereGeometry( 5, 32, 32 );const material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );const sphere = new THREE.Mesh( geometry, material );scene.add( sphere );
长方体几何
const geometry = new THREE.BoxGeometry( 1, 1, 1 );const material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );const cube = new THREE.Mesh( geometry, material );scene.add( cube );
平面几何
const geometry = new THREE.PlaneGeometry( 5, 20, 32 );const material = new THREE.MeshBasicMaterial( {color: 0xFF0000, side: THREE.DoubleSide} );const plane = new THREE.Mesh( geometry, material );scene.add( plane );
圆锥几何
// 半径, 高度, 管道横截面的分段数const geometry = new THREE.ConeGeometry( 5, 20, 32 );const material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );const cone = new THREE.Mesh( geometry, material );scene.add( cone );
圆柱几何
// 上圆半径,下圆半径,高度,管道横截面的分段数const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );const material = new THREE.MeshBasicMaterial( {color: 0xFF0000} );const cylinder = new THREE.Mesh( geometry, material );scene.add( cylinder );
甜甜圈形几何(圆环缓冲几何体)
radius
- 环面的半径,从环面的中心到管道横截面的中心。默认值是1。tube
— 管道的半径,默认值为0.4。radialSegments
— 管道横截面的分段数,默认值为12。tubularSegments
— 管道的分段数,默认值为48。arc
— 圆环的圆心角(单位是弧度),默认值为Math.PI * 2
。
const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );const material = new THREE.MeshBasicMaterial( { color: 0xFF0000 } );const torus = new THREE.Mesh( geometry, material );scene.add( torus );
相机控制
- 自动旋转
- 定位鼠标
- 鼠标拖放
相机自动绕地球圆周移动
设置相机位置会为camera
对象的属性position
分配一个数值。
const radian = rot * Math.PI / 180;camera.position.x = 1000 * Math.sin(radian);camera.position.z = 1000 * Math.cos(radian);
使用camera
object方法来指定原点坐标。方法是可以强制从任意位置指向指定坐标的指令。lookAt()
(0, 0, 0)
camera.lookAt(new THREE.Vector3(0, 0, 0));
围绕地球旋转相机
let rot = 0; function animate() { // 渲染到页面上, 视口,摄像头 renderer.render(scene, camera); // 缓动公式 rot += 0.2; const radian = rot * Math.PI / 180; camera.position.x = 1000 * Math.sin(radian); camera.position.z = 1000 * Math.cos(radian); camera.lookAt(new THREE.Vector3(0, 0, 0)); requestAnimationFrame(animate); } animate()
自动控制相机移动的THREE.OrbitControls
- 安排相机绘制圆形轨道
- 使用指针操作更改相机位置和角度
const controls = new OrbitControls( camera, renderer.domElement ); function animate() { controls.update(); }
材质
THREE.MeshBasicMaterial类(网格基础材质)是一种不考虑光照的材质。由于没有阴影THREE.MeshNormalMaterial(网格法线材质)该类是一种可视化 RGB 中正常颜色的材质THREE.MeshLambertMaterial (网状朗伯材质) 表现无光泽度的磨砂质感的材质。因为出现了阴影,所以可以表现出深度感。一种需要阴影的材料,所以它需要光THREE.MeshPhongMaterial 表现光泽纹理的材质THREE.MeshToonMaterial (网状卡通材质) 可以实现类似动漫的卡通着色THREE.MeshStandardMaterial (网格标准材料)基于物理的渲染材质
光源
环境光源
AmbientLight
类是实现环境光源的类。均匀照亮整个 3D 空间。当你想要均匀地提亮时使用它是很好的。由于无法产生阴影和投射阴影,因此仅此光源无法表现出三维效果。通常与其他灯一起使用。
颜色, 光照强度const light = new THREE.AmbientLight(0xFFFFFF, 1.0);scene.add(light);
平行光源
DirectionalLight
类别是在特定方向发射的光。假设光源无限远,从它发出的所有光线都是平行的。一个简单的例子是阳光。由于太阳离地球如此之远,它的位置可以被认为是无限的。从太阳到地球表面的光线是平行的。
半球形光源
HemisphereLight
类AmbientLight
与类类似,但是你可以将来自上方的光的颜色和来自下方的光的颜色分开。来自下方的光是反射光,类似于室外的光
// 天空的颜色, 地面的颜色,光强度const light = new THREE.HemisphereLight(0x888888, 0x0000FF, 1.0);
点光源
PointLight
类是从一个点向所有方向发射的光源。一个很好的例子是裸灯泡。裸露的灯泡照亮了周围的环境。
射灯光源
SpotLight
一个类是一种光源,它从一个点沿着一个圆锥体向一个方向发射。一个很好的例子是想象舞台上的手电筒或聚光灯。您可以指定衰减率和光的方向,因此可以指定的参数很多。如果放置很多,就会产生三维效果和存在感。
颜色、光强度、距离、照明角度、背景虚化、衰减率const light = new THREE.SpotLight(0xFFFFFF, 4, 30, Math.PI / 4, 10, 0.5);
辅助类
// 射灯光源辅助类const lightHelper = new THREE.SpotLightHelper(light);
矩形光源
// 颜色、光强、宽度、高度const light = new THREE.RectAreaLight(0xFFFFFF, 5.0, 10, 10);scene.add(light);
阴影
允许物体在其他物体上投射阴影对着光源。投射阴影将改善现实。
使用此功能有四种设置。
- 在渲染器中启用阴影
- 启用光源阴影
- 设置要投射阴影的网格对象
- 设置 Mesh 对象以接收阴影
需要注意:“投射阴影”和“接收阴影”。
分别设置castShadow
属性(投射阴影的属性)和属性(接收阴影的属性)。receiveShadow
在渲染器属性shadowMap
中启用它
renderer.shadowMap.enabled = true;
启用光源的castShadow
属性。光源使用定向SpotLight
发光。PointLight
// 创建照明const light = new THREE.SpotLight(0xFFFFFF, 2, 100, Math.PI / 4, 1);// 在灯光上启用阴影light.castShadow = true;scene.add(light);
投射阴影的网格receiveShadow
启用属性。
const meshKnot = new THREE.Mesh( new THREE.TorusKnotGeometry(3, 1, 100, 16), new THREE.MeshStandardMaterial());// 设置上了一层阴影meshKnot.castShadow = true;scene.add(meshKnot);
设置阴影大小
light.shadow.mapSize.width = 2048;light.shadow.mapSize.height = 2048;
相机
相机类型
THREE.PerspectiveCamera
: 应用透视的相机THREE.OrthographicCamera
:应用平行投影的相机
正交相机
// 左,右,上,下,近截面,远截面// new THREE.OrthographicCamera(left, right, top, bottom, near, far)const camera = new THREE.OrthographicCamera(-480, +480, 270, -270, 1, 1000);
雾效
一种使远处的物体看起来朦胧的效果
通过设置与相机的起始和结束距离,中间的对象将以指定的颜色变暗。
// 颜色、开始距离、结束距离scene.fog = new THREE.Fog(0x000000, 50, 2000);
应用于雾效
material.fog = true;
组
创建嵌套结构,THREE.Object3D
或使用THREE.Group
类方法add()
添加它。相反,如果要从嵌套结构中删除,remove()
请使用 方法。
const wrap = new THREE.Object3D(); wrap.add(mesh); scene.add(wrap);
const wrap = new THREE.Group(); wrap.add(mesh); scene.add(wrap);
世界坐标
THREE.Object3D getWorldPosition()
您可以使用类方法获取世界坐标。由于我们需要计算世界坐标,所以要计算的3D对象必须添加到场景中
const world = object3D.getWorldPosition(new THREE.Vector3());
加载模型数据
GLTF 文件
const loader = new THREE.GLTFLoader(); const gltf = loader.loadAsync("./models/gltf/glTF/ToyCar.gltf");const model = gltf.scene; scene.add(model);
3ds 文件
const loader = new THREE.TDSLoader();// 指定纹理路径 loader.setResourcePath("models/3ds/portalgun/textures/");// 指定 3ds 文件的路径 const object = loader.loadAsync("models/3ds/portalgun/portalgun.3ds"); scene.add(object);
Collada 文件
const loader = new THREE.ColladaLoader(); const collada = await loader.loadAsync("./models/collada/elf/elf.dae"); const model = collada.scene; scene.add(model);
调整大小
window.addEventListener("resize", ()=>{ const width = window.innerWidth; const height = window.innerHeight; renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(width, height); camera.aspect = width / height; camera.updateProjectionMatrix();});
检查与对象的交叉点
鼠标坐标
const mouse = new THREE.Vector2();// 注册鼠标事件canvas.addEventListener("mousemove", handleMouseMove);// 鼠标移动事件function handleMouseMove(event) { const element = event.currentTarget; //画布元素上的 XY 坐标 const x = event.clientX - element.offsetLeft; const y = event.clientY - element.offsetTop; // 画布元素的宽度/高度 const w = element.offsetWidth; const h = element.offsetHeight; //在 -1 到 +1 范围内注册当前鼠标坐标 mouse.x = ( x / w ) * 2 - 1; mouse.y = -( y / h ) * 2 + 1;}
射线const raycaster = new THREE.Raycaster();tick();// 每帧运行的循环事件function tick() { // 直接从鼠标位置生成光线矢量 raycaster.setFromCamera(mouse, camera); // 获取被射线击中的物体 const intersects = raycaster.intersectObjects(scene.children); if(intersects.length > 0){ // 对碰撞的物体做某事 } renderer.render(scene, camera); requestAnimationFrame(tick);}
显示大量粒子
// 创建形状数据 const SIZE = 3000; // 要放置的数字 const LENGTH = 1000; const vertices = []; for (let i = 0; i < LENGTH; i++) { const x = SIZE * (Math.random() - 0.5); const y = SIZE * (Math.random() - 0.5); const z = SIZE * (Math.random() - 0.5); vertices.push(x, y, z); } // 创建形状数据 const geometry7 = new THREE.BufferGeometry(); geometry7.setAttribute("position", new THREE.Float32BufferAttribute(vertices, 3)); const material7 = new THREE.PointsMaterial({ size: 10, color: 0xffffff, }); const mesh7 = new THREE.Points(geometry7, material7); scene.add(mesh7);
移动几何物体
THREE.BufferAttribute
保存顶点坐标信息。
THREE.BufferAttribute
是一个不是数组的对象,所以它的用法有点特殊。count
由于您可以获得属性中的顶点数,因此for
使用与顶点数一样多的循环语句会很好。 您可以使用 getX()
方法获取每个顶点的位置信息getY()
。getZ()
const position = mesh.geometry.attributes.position;for (let i = 0; i < position.count; i++) { // 各顶点的XYZ坐标 const x = position.getX(i); const y = position.getY(i); const z = position.getZ(i);}
完整点的案例
// 平面几何 const geometry = new THREE.PlaneGeometry(400, 400, 20, 20); // 骨架线性的 const material = new THREE.MeshBasicMaterial({ wireframe: true }); // 物体制作 const mesh = new THREE.Mesh(geometry, material); mesh.rotation.x = Math.PI / 2; // x轴的角度 scene.add(mesh); tick(); function tick() { // 几何顶点坐标信息 const position:any = mesh.geometry.attributes["position"]; for (let i = 0; i < position.count; i++) { // // 各頂点的XYZ座標 const x = position.getX(i); const y = position.getY(i); const z = position.getZ(i); // 计算高度(物体的Z 坐标) const nextZ = Math.sin(x * 0.03 + y * 0.02 + Date.now() * 0.002) * 30; // position.setX(i, x); // 您可以省略 x 和 y,因为它们不会改变 // position.setY(i, y); position.setZ(i, nextZ); } // 需要更新顶点 position.needsUpdate = true; renderer.render(scene, camera); requestAnimationFrame(tick); }
对平面的顶点应用波浪式运动
通过使用 SimplexNoise 生成噪声,您可以创建类似于地面的表达式。虽然 SimplexNoise 本身不包含在 Three.js 中,但它是作为附加组件提供的
使用时,THREE.SimplexNoise
从类中创建一个实例并noise()
使用该方法。noise()
当传递一个数字作为参数时,该方法返回一个介于 -1 和 1 之间的数字。
// 初始化噪声// 使用实例const simplexNoise = new THREE.SimplexNoise();// x1和y1是任意数值const value = simplexNoise.noise(x1, y1);
使用PlaneGeometry
创建类似地面的例子
// 平行光源 const light1 = new THREE.DirectionalLight(0x3399ff, 1); light1.position.set(1, 1, 1); scene.add(light1); // 平面几何 // width, height,宽度横截面, 高度横截面 const geometry = new THREE.PlaneGeometry(1000, 1000, 80, 80); const material = new THREE.MeshLambertMaterial({ // 顶点着色 flatShading: true, // 定义将要渲染哪一面, 两面 side: THREE.DoubleSide, }); const mesh = new THREE.Mesh(geometry, material); // 地面旋转角度 mesh.rotation.x = Math.PI / 2; scene.add(mesh); // 初始化噪声 const simplexNoise = new SimplexNoise(); tick(); function tick() { // 几何顶点坐标信息 const position:any = mesh.geometry.attributes["position"]; for (let i = 0; i < position.count; i++) { // 各頂点的XYZ座標 const x = position.getX(i); const y = position.getY(i); const time = Date.now() * 0.0001; // 计算高度, 主要是z坐标 const nextZ = simplexNoise.noise(x * 0.002 + time, y * 0.001 + time) * 150; position.setZ(i, nextZ); } // // 需要更新顶点 position.needsUpdate = true; renderer.render(scene, camera); requestAnimationFrame(tick); }
setXYZ()
您可以使用单独的setX()
、setY()
和方法setZ()
来做同样的事情
烟花效果
const LENGTH = 1000; const vertices = []; /** * 存储粒子速度的序列 * @type {THREE.Vector3[]} */ const speeds:any = []; for (let i = 0; i < LENGTH; i++) { // 顶点 初期坐标 vertices.push(0, 0, 0); // 定义粒子的速度 const x = 2 * (Math.random() - 0.5); const y = 2 * (Math.random() - 0.5); const z = 2 * (Math.random() - 0.5); speeds.push(new THREE.Vector3(x, y, z)); } // 缓冲存储器 const geometry = new THREE.BufferGeometry(); geometry.setAttribute("position", new THREE.Float32BufferAttribute(vertices, 3)); const material = new THREE.PointsMaterial({ size: 2, color: 0xffffff, }); // 点 const mesh = new THREE.Points(geometry, material); scene.add(mesh) tick(); function tick() { // 几何顶点坐标信息 const position:any = mesh.geometry.attributes["position"]; for (let i = 0; i < position.count; i++) { // 各頂点のXYZ座標 const x = position.getX(i); const y = position.getY(i); const z = position.getZ(i); // speeds序列是速度用序列。存储了各个顶点的速度 const nextX = x + speeds[i].x; const nextY = y + speeds[i].y; const nextZ = z + speeds[i].z; // 新坐标 position.setXYZ(i, nextX, nextY, nextZ); // 原点からの距離を計算 const length = new THREE.Vector3(x, y, z).length(); // 如果超过了一定的范围 if (length > 100) { // 回到原点 position.setXYZ(i, 0, 0, 0); } } // 需要更新顶点 position.needsUpdate = true; renderer.render(scene, camera); requestAnimationFrame(tick); }
关键词:
-
three.js 入门学习(二) 环球热资讯
上一个小案例import*asTHREEfrom& 39;three& 39;;constwidth=960;constheight=540; 渲染器constrenderer=n
来源: three.js 入门学习(二) 环球热资讯
DIY技巧:微星B760主板13600K降压教程 CPU温度暴降25℃
世界消息!专家称电动车要发展农村型号:支持反向充电 可增加收入
环球热门:1-2!“全校班”广州队又输了!3连败+开局5轮不胜,直冲降级区
基于SLAM系统建图仿真,完成定位仿真
天天观速讯丨安卓一年一迭代谷歌也累了:开始挤牙膏更新
女子把变心男友送的黄金卖了14万:没真心但有真金!自愿赠与或不用返还_天天快看
升级彩超5项:瑞慈体检套餐279元母亲节大促 今日热搜
久穿不易变形 放克220g宽松短袖29元大促
徐工四款新“国货之光”问世:百变狮王、自动灭火机器人 国产化率100% 世界观焦点
万胜智能: 关于使用部分闲置募集资金进行现金管理的进展公告
美团一面:Spring Cloud 如何构建动态线程池?
动态焦点:每天走路超这一步数 能大幅降低死亡率 上班族学起来
B站“离谱”专利获批:开车也能发弹幕了?|新要闻
热议:俄媒:泽连斯基拒绝教皇方济各调解俄乌提议
世界热议:我对IdentityServer4的初步了解
每日关注!JavaSE面试题【长期更新】
想玩《塞尔达传说:王国之泪》却不知道买哪款Switch?这篇选购攻略帮你避坑!
CPU散片学问大:碰见这两个型号千万别买|今日热搜
01-Linux命令和C语言基础|全球快讯
全球今亮点!西湖5平米商亭租金284万 每天约7780元引热议
母亲节 我来讲一个给妈妈换了“苹果全家桶”后的故事
首次发现!唾液含剧毒的五爪金龙现身云南:寿命长达150年
每日短讯:2023年5月14日融雪剂价格最新行情预测
国金证券:稳增长政策效果加速显现 居民消费修复延续性较强
D加密沦陷!黑客放出《生化危机4重制版》破解资源:好评如潮大作免费玩
AI起了反效果:4月微软Bing市场份额不升反降
特斯拉雨天高速失控!旋转、掉头、撞墙后 司机接着加速跑了
【报资讯】怀旧服磨刀石是什么专业制作的(怀旧服磨刀石)
前端语言串讲 | 青训营笔记
女子夜里打出租 全程直播监控!司机:不自信了_当前焦点
环球快资讯丨最后一道封印解除!ChatGPT重大升级 上线联网功能
检察院不批捕取保候审后还会收监吗|世界快播
女子旅游后高烧不退确诊“不死癌症” 医生:晒太阳是重要诱因
性能完全不达标 EPA报告:特斯拉4680电池能量密度比2170还低 当前观察
landrover是什么车多少钱一辆 landrover是什么车
Python学习之六_同时访问Oracle和Mysql的方法
上海张江全链条发力营造更优企业创新发展环境 今日快讯
放弃ZEKU自研芯片!OPPO张璇:产品生命周期软件维护不受影响_世界速读
江苏扬州:体育嘉年华嗨出狂欢味 百余场赛事活动贯穿全年-全球播资讯
曾为中国最大的汽车经销商 庞大集团濒临退市
今天母亲节 妈妈收到孩子送礼物时的反应让千万网友动容-全球关注
每日焦点!自称长相比较可爱28岁女副教授回应带梗招生:院方支持新表达方式
Windows 10操作系统绝唱了!终极正式版开始强制升级
天天快讯:保定市区养犬收费标准来了!登记500/300,年检200!
学系统集成项目管理工程师(中项)系列21b_整体管理(下)
母亲节今天到来!微信上线限时状态:感谢妈妈 天天动态
卖给中国人的车 连玻璃都减配? 全球快看点
大哥13 Ultra同款!小米13/Pro相机界面升级:变焦转盘调焦更方便
成都市验房公司_成都验房公司
Java Socket编程|环球聚看点
Ubuntu下通过Wine安装LTSpice 17.1.8_当前讯息
环球聚焦:讯飞输入法推出苹果 macOS 版,支持 10.15 及以上版本
当前快看:江苏女子到山东旅游买到的特产竟是戒尺:自己之前根本没有见过
环球速读:80、90后的青春记忆!《街霸》过气了吗?
iPhone用户被骗子盯上!三招轻松破解
北京一车主遇无接触事故被认定负全责 骑车人自己滑倒:网友吵翻
百万召回能解决单踏板电门当刹车?特斯拉回应:选择权给大家 误踩会提醒
莱州市永安路街道:帮办代办暖心解忧 架起为民服务“连心桥”
23岁网红用GPT-4复制自己,每月狂赚3500万 当前播报
Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析-天天即时
七孔大豆纤维夏被到手59元:牛奶般丝滑 亲肤透气 今日报
何炅录制芒果TV《向往的生活》:手机真我11 Pro+抢镜
安卓机皇!三星Galaxy S23 Ultra限量版上市:9488元 全球速读
淄博八大局知名麻辣串疑被房东赶走:老板回应双方还在商讨此事 世界视讯
厦门英才学校小学部第三套课间操_厦门英才学校小学部-天天热消息
今日快讯:算命奇想
就没有《猫和老鼠》还原不了的图!AI被锤爆了
热门:中性笔后面的神秘液体是什么?竟然大有讲究!
今日讯!德州驴出肉率_德州驴
小米13 Pro被低估了!雷军力荐:数码发烧友就选它|观点
通讯!00后女生旅游不忘给新手机开光 网友:你是懂开光的
焦点资讯:《暗黑4》遇上DLSS 3:最低帧猛增50%
迁移到 Gradle 7.x 使用 Version Catalogs 管理依赖
焦点热议:线段树
【LeetCode剑指offer#04】包含min函数的栈、栈的压入、弹出序列(辅助栈的应用)
环球速读:51岁已被游客喊了十多年谭爷爷!熊猫饲养员谭金淘“出圈”
全球快讯:17岁少年骑共享单车52天5000公里!成都-拉萨-新疆 穿越无人区
当前快看:12岁男孩玩游戏一个月花掉10多万!家长申请退款却遭拒绝
聊一聊:iOS 16.5 RC准正式版推送!iOS 16系统更新要绝唱了
使用go-cqhttp搭建qq机器人
每天坐高铁上下班是什么体验?一个月2400元
拒绝爆显存!RTX 4060 Ti 16GB曝新料:功耗增加5W|环球观点
WSL Ubuntu 安装 minikube 世界热消息
工程粉墙合同范本(实用4篇)
环球新资讯:长征九号、长征十号火箭发动机好消息!200吨、载人可复用
男子淄博吃烧烤吐槽扇贝肉指甲大 网友:应该去青岛|世界最新
再也不用担心爱车被破坏!理想官方详解哨兵模式:三大优势|环球观热点
要闻速递:昔日安卓手机王者!HTC U23 Pro官宣:搭载骁龙7芯片
当前讯息:观战台:曼城阿森纳继续隔空对话 巴萨赢球即夺冠
精选!2022年全球电动车销量排行榜前十名出炉:中国霸气占7席
这届年轻人“断亲”或已成常态 90后/00后几乎都不走亲戚:原因无奈
瑞吉外卖day4
看点:杲杲冬日光明暖真可爱什么意思-杲杲冬日光明暖真可爱
男子报案在香港中环码头遭遇抢劫 其周杰伦演唱会门票被抢走
世嘉公布《魔界战记7》角色“彼岸绝胜斋”中文版介绍影像 为最恶毒剑士
人气手游《赛马娘》樱花进王1/7比例手办现已开定 将于10月发售
《爱恋冰果室》即将登陆XboxS 为恋爱经营模拟游戏
【世界新视野】4月新能源销量排名:最亮眼的 竟然不是比亚迪
当前速读:为什么面粉没有以前的香?加了添加剂安全吗?