web3d-three.js场景设计器-mesh网格添加多模型-模型描述随动

给场景中的模型加上广告牌描述,可以在模型的MESH里添加Sprite,配上相应的文字,

描述Sprite的位置则是在mesh中的相对位置,比如模型高10,那么我们可以给一个y等于10 来进行适配,这样在移动模型mesh网格时可以整体移动。

function createBox(data) {

const geometry = new THREE.BoxGeometry(data.width, data.height, data.length)

var material

var materials = \[\]

if (data.groundTexture && data.groundTexture != '') {

const textures = data.groundTextures ? data.groundTextures : \[\]

if (textures.length > 1) {

textures.forEach(element => {

if(element==''){

const tmpMaterial = new THREE.MeshStandardMaterial({

color: data.color,

opacity: data.opacity,

transparent: data.opacity < 1,

roughness: 1.0,

metalness: 0.0

})

materials.push(tmpMaterial)

}else{

var map = new THREE.TextureLoader().load(element)

map.wrapS = data.wrapType

map.wrapT = data.wrapType

map.repeat.set(data.repeatX, data.repeatY)

const tmpMaterial = new THREE.MeshStandardMaterial({

map: map

})

materials.push(tmpMaterial)

}

})

} else {

var map = new THREE.TextureLoader().load(data.groundTexture)

map.wrapS = data.wrapType

map.wrapT = data.wrapType

map.repeat.set(data.repeatX, data.repeatY)

material = new THREE.MeshStandardMaterial({

map: map

})

}

} else {

material = new THREE.MeshStandardMaterial({

color: data.color,

opacity: data.opacity,

transparent: data.opacity < 1,

roughness: 1.0,

metalness: 0.0

})

}

const box = new THREE.Mesh(geometry, materials.length > 0 ? materials : material)

// 创建立方体描述

if(data.text&&data.text!='')

createSprite({text:data.text, fontSize:100, textColor: '#ffffff', color: '#1781b5', imageUrl:''

,position:{x:0, y:0, z:0},rotate:{x:0, y:0, z:0},scale:{x:1, y:1, z:1}}).then(sprite=>{

sprite.position.y=data.height;

sprite.visible=true;

sprite.userData.text=data.text;

box.add(sprite)

})

box.name = data.name

box.castShadow = true

box.userData.height = data.height

return box

}

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄3 天前
JavaScript 隐式全局变量解析
javascript