网站首页 > 技术文章 正文
最近开发一个vr全景图片编辑器,开始研究webgl,看得云里雾里,感觉太底层了,对于一个数学和图形学都不好的人来说,和看天书差不多,幸运的是ThreeJS这个框架很好的对webgl底层进行来封装,不用知道那么多底层知识,下面对最近的项目重点做一个笔记。
开发环境
three.min.js
OrbitControls.js
解决方案
- 创建球的过程比较简单,这里就不说了。
- 创建点group,考虑后面会做删除功能,所以把所有的实体都以group组为单位添加,后续方便做删除
// 标记点组合
var gLabel = new THREE.Group();
- 获取canvas对应球坐标
var average = getAverage();
// 获取average函数
function getAverage() {
var average = 0;
if (dom.clientWidth > dom.clientHeight) {
average = dom.clientHeight / 180;
} else {
average = dom.clientWidth / 360;
}
return average;
}
- 创建文字标注、设置大小、并赋予材质
var texture = new THREE.CanvasTexture(getCanvasFont(textLength * fontsize * average, fontsize * average, textvalue, color, backgroundColor));
var fontMesh = new THREE.Sprite(
new THREE.SpriteMaterial({
map: texture
})
)
fontMesh.scale.x = fontsize / average * textLength;
fontMesh.scale.y = fontsize / average;
- 定位标注
// 定义提示文字显示位置
var lblPos = this.getPosition(_labelData[i].attributes.x + 90, _labelData[i].attributes.y, 35);
fontMesh.position.set(lblPos.x, lblPos.y, lblPos.z);
gLabel.add(fontMesh);
附上效果图
转动时候标注点也会跟随转动,效果还不错。
猜你喜欢
- 2024-11-11 eat、have和take表达“吃”有区别吗?
- 2024-11-11 字节二面:谈谈你对JS中的this指向的理解!
- 2024-11-11 你知道JS的“三座大山”吗?带你初识前端JavaScript经典内容
- 2024-11-11 cheap date可不是“便宜的约会”,这些date你了解吗?
- 2024-11-11 js利用WebSocket链接后端并获取数据的方法
- 2024-11-11 JavaScript 内的 this 指向 js中this指针
- 2024-11-11 丝滑般 Vue 拖拽排序树形表格组件Vue-DragTreeTable
- 2024-11-11 5 年,只为了一个更好的校验框架 农行网银显示此内容不能显示在一个框架中
- 2024-11-11 this 指向问题,全网最全最简单口诀
- 2024-11-11 什么是HTM或HTML文件?如何打开HTM和HTML文件?
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-