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

}

相关推荐
三十_A5 小时前
零基础通过 Vue 3 实现前端视频录制 —— 从原理到实战
前端·vue.js·音视频
前端小菜袅5 小时前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
Highcharts.js5 小时前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
We་ct5 小时前
LeetCode 228. 汇总区间:解题思路+代码详解
前端·算法·leetcode·typescript
郝学胜-神的一滴5 小时前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
摇滚侠5 小时前
Java,举例说明,函数式接口,函数式接口实现类,通过匿名内部类实现函数式接口,通过 Lambda 表达式实现函数式接口,演变的过程
java·开发语言·python
阿里嘎多学长5 小时前
2026-02-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Tony Bai5 小时前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang
打工的小王5 小时前
java并发编程(七)ReentrantReadWriteLock
java·开发语言
lang201509285 小时前
Java并发革命:JSR-133深度解析
java·开发语言