当前位置: 首页 > article >正文

Cesium快速入门到精通系列教程八:Primitive和Entity的相似点与不同点

在 Cesium1.95 中,Primitive和Entity是两种创建和管理三维对象的核心方式,它们在功能上有相似之处,但设计目标和使用场景差异明显。以下是详细对比:一、相似点​​1、基础渲染目标​​两者均用于在 3D 场景中绘制图形(点、线、面、模型等)。最终都会通过底层 WebGL 渲染管线生成可视化效果 。​​2、支持动态属性​​均支持随时间变化的属性(如位置移动、颜色渐变)。二、核心差异​​维度​​​​Primitive​​​​Entity​​​​设计定位​​底层图形 API(面向 GPU 优化)高级数据 API(面向业务逻辑)​​灵活性​​直接控制几何体/材质,支持复杂渲染封装底层细节,API 简单易用​​性能表现​​高频渲染场景更优(如 10W+ 静态模型)动态更新时开销较大​​代码复杂度​​需处理几何实例、着色器等细节声明式配置,无需关注底层实现​​动态更新​​更新需重构整个 Primitive直接修改属性(如entity.position)三、性能关键差异详解​​1、渲染机制​​Primitive​​:通过合并几何实例(GeometryInstance)减少 Draw Call,适合​​静态/批量数据​​。例如:// 10W 个盒子实例合并渲染 const instances = positions.map(pos = new Cesium.GeometryInstance({ geometry: boxGeometry, modelMatrix: Cesium.Matrix4.fromTranslation(pos) })); viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances: instances, appearance: new Cesium.PerInstanceColorAppearance() }));​Entity​​:每个实体独立生成 Primitive,​​大量实体时 GPU 压力剧增​​。2、内存与更新效率​​Primitive​​:静态数据内存占用低,但动态更新需重建几何。​​Entity​​:属性绑定(如 CallbackProperty)灵活,适合​​频繁交互​​的场景(如移动车辆)。四、适用场景建议​​场景​​​​推荐 API​​​​原因​​静态大规模模型(如城市建筑)Primitive合并渲染降低 CPU/GPU 开销动态对象(如飞机、车辆轨迹)Entity属性更新便捷,支持交互(点击弹窗、路径动画)自定义着色器效果(如热力图)Primitive直接操控材质与 GLSL 着色器快速原型开发Entity简化代码(如viewer.entities.add({ point: { ... } }))五、Entity实例1、画点const point = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(116.391, 39.904, 0), point: { pixelSize: 100, color: Cesium.Color.RED, }, }); viewer.flyTo(point);2、添加文本new Cesium.LabelGraphics(options)NameTypeAttributesDefaultDescriptionshowProperty|booleanoptionaltrue是否显示标签。textProperty|stringoptional标签显示的文本内容,唯一的「逻辑必填项」,未配置时标签不会显示fontProperty|stringoptional'30px sans-serif'字体样式,格式与 CSS font 属性一致(如 '24px Arial')。styleProperty|LabelStyleoptionalLabelStyle.FILL文本样式,可选值:- LabelStyle.FILL(仅填充)- LabelStyle.OUTLINE(仅描边)- LabelStyle.FILL_AND_OUTLINE(填充+描边)。scaleProperty|numberoptional1.0整体缩放比例。showBackgroundProperty|booleanoptionalfalseA boolean Property specifying the visibility of the background behind the label.backgroundColorProperty|Coloroptionalnew Color(0.165, 0.165, 0.165, 0.8)A Property specifying the backgroundColor.backgroundPaddingProperty|Cartesian2optionalnew Cartesian2(7, 5)ACartesian2Property specifying the horizontal and vertical background padding in pixels.pixelOffsetProperty|Cartesian2optionalCartesian2.ZERO标签相对于其锚点的屏幕空间偏移量(像素)。Cartesian2(x, y)中,x 为正向右偏移,y 为正向上偏移。eyeOffsetProperty|Cartesian3optionalCartesian3.ZEROACartesian3Property specifying the eye offset.horizontalOriginProperty|HorizontalOriginoptionalHorizontalOrigin.CENTER标签的水平对齐方式,相对于锚点:HorizontalOrigin.LEFT: 左对齐HorizontalOrigin.CENTER: 居中对齐HorizontalOrigin.RIGHT: 右对齐verticalOriginProperty|VerticalOriginoptionalVerticalOrigin.CENTER标签的垂直对齐方式,相对于锚点:VerticalOrigin.TOP: 顶部对齐VerticalOrigin.CENTER: 居中对齐VerticalOrigin.BOTTOM: 底部对齐VerticalOrigin.BASELINE: 基线对齐(文本基线,如字母 x 的底部)heightReferenceProperty|HeightReferenceoptionalHeightReference.NONE高度参考系:- NONE:绝对高度(默认)- CLAMP_TO_GROUND:贴地- RELATIVE_TO_GROUND:相对地面高度。CLAMP_TO_GROUND 时,eyeOffset 可能失效,建议用 pixelOffset 调整位置;fillColorProperty|ColoroptionalColor.WHITE文本填充颜色(如 Cesium.Color.RED)。outlineColorProperty|ColoroptionalColor.BLACK文本描边颜色。outlineWidthProperty|numberoptional1.0描边宽度(像素)。translucencyByDistanceProperty|NearFarScalaroptional根据相机距离设置标签的透明度。格式:NearFarScalar(near, nearValue, far, farValue),其中 near和 far是相机到标签的距离(米),nearValue和 farValue是对应的透明度(0~1)。pixelOffsetScaleByDistanceProperty|NearFarScalaroptional根据相机距离缩放 pixelOffset,pixelOffsetScaleByDistance: new Cesium.NearFarScalar(100, 1.0, 1000, 0.5)(1000 米外偏移缩小 50%)scaleByDistanceProperty|NearFarScalaroptional根据距离调整缩放(如 new Cesium.NearFarScalar(1000, 1.0, 5000, 0.5))。distanceDisplayConditionProperty|DistanceDisplayConditionoptional控制标签在哪个距离范围内显示。格式:DistanceDisplayCondition(minimumDistance, maximumDistance)(米)。disableDepthTestDistanceProperty|numberoptional禁用深度测试的距离(米)。当相机距离小于此值时,标签将始终绘制在其他物体之上(避免被地形/模型遮挡)。设为 Number.POSITIVE_INFINITY可完全禁用深度测试。注意事项必填属性:text 是唯一的「逻辑必填项」,未配置时标签不会显示;动态属性:所有属性支持 CallbackProperty 实现实时更新,例如:深度测试:设置 disableDepthTestDistance: Number.POSITIVE_INFINITY 可避免标签被地形 / 模型遮挡;贴地标签:heightReference: CLAMP_TO_GROUND 时,eyeOffset 可能失效,建议用 pixelOffset 调整位置;性能优化:大量标签时,合理设置 distanceDisplayCondition 可减少渲染压力。// 动态更新标签文本 text: new Cesium.CallbackProperty(() = { return `当前时间:${new Date().toLocaleTimeString()}`; }, false)// 使用 viewer.entities.add() 添加一个带有文本的实体 const entity = viewer.entities.add({ name: "示例文本标签", // 可选,用于标识该实体 position: Cesium.Cartesian3.fromDegrees(116.391, 39.904, 0), // 北京天安门附近的经纬度 label: { text: "你好,Cesium!", // 要显示的文本内容 font: "14px sans-serif", // 字体样式 fillColor: Cesium.Color.WHITE, // 文本颜色 outlineColor: Cesium.Color.BLACK, // 文本轮廓颜色 outlineWidth: 2, // 轮廓宽度 style: Cesium.LabelStyle.FILL_AND_OUTLINE, // 填充和轮廓样式 verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 垂直对齐方式 horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // 水平对齐方式 pixelOffset: new Cesium.Cartesian2(0, -10), // 像素偏移,用于调整位置 heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(100, 50000), disableDepthTestDistance: Number.POSITIVE_INFINITY // 强制始终显示,不受深度测试影响 }, }); viewer.zoomTo(entity);3、添加线new Cesium.PolylineGraphics(options)NameTypeAttributesDefaultDescriptionshowProperty|booleanoptionaltrueA boolean Property specifying the visibility of the polyline.positionsProperty|Array.Cartesian3optionalA Property specifying the array ofCartesian3positions that define the line strip.widthProperty|numberoptional1.0A numeric Property specifying the width in pixels.granularityProperty|numberoptionalCesium.Math.RADIANS_PER_DEGREEA numeric Property specifying the angular distance between each latitude and longitude if arcType is not ArcType.NONE.material

相关文章:

Cesium快速入门到精通系列教程八:Primitive和Entity的相似点与不同点

在 Cesium1.95 中,Primitive和Entity是两种创建和管理三维对象的核心方式,它们在功能上有相似之处,但设计目标和使用场景差异明显。以下是详细对比: 一、相似点​​ 1、基础渲染目标​​ 两者均用于在 3D 场景中绘制图形(点、线、面、模型等)。 最终都会通过底层 WebGL…...

DanKoe 视频笔记:致富之路:三个关键决策

在本节课中,我们将要学习决定个人能否实现财富积累的三个核心决策。这些决策并非关于具体的赚钱技巧,而是关于如何从根本上重塑你的思维方式和行为模式,为创造财富铺平道路。 概述 许多人渴望财富,但往往不得其法。真正的致富之…...

XXL-SSO与Active Directory集成:企业级身份管理终极方案

XXL-SSO与Active Directory集成:企业级身份管理终极方案 XXL-SSO是一款分布式单点登录框架,能够帮助企业实现多系统统一身份认证与授权。本文将详细介绍如何将XXL-SSO与Active Directory集成,打造企业级身份管理解决方案,让用户认…...

cv_unet_image-colorization部署案例:RTX显卡5分钟搭建AI上色工作站

cv_unet_image-colorization部署案例:RTX显卡5分钟搭建AI上色工作站 1. 项目简介 你是否遇到过这样的情况:翻看老照片时,发现很多珍贵的黑白照片已经褪色发黄,想要恢复色彩却不知道从何下手?或者作为摄影师&#xff…...

Phi-4-mini-reasoning效果展示:中文长文本多跳推理与隐含前提挖掘

Phi-4-mini-reasoning效果展示:中文长文本多跳推理与隐含前提挖掘 1. 模型核心能力概览 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,在数学推导、逻辑分析和多步推理等场景下展现出独特优势。与通用聊天模型不同,它专为"…...

StructBERT语义分析工具实测:一键判断句子相似度,支持GPU加速

StructBERT语义分析工具实测:一键判断句子相似度,支持GPU加速 1. 工具核心价值 StructBERT语义分析工具是一款专为中文文本设计的本地化语义相似度计算解决方案。不同于传统的关键词匹配方法,该工具基于阿里巴巴开源的StructBERT-Large模型…...

intv_ai_mk11应用场景:研发团队用其自动生成Git Commit Message规范模板

研发团队如何用intv_ai_mk11自动生成Git Commit Message规范模板 1. 研发团队的Commit Message痛点 每个研发团队都面临过这样的困境:代码提交信息五花八门,格式混乱。有的同事写"修复bug",有的写"改了东西"&#xff0…...

Ostrakon-VL-8B辅助作业批改实战:识别手写公式与图表

Ostrakon-VL-8B辅助作业批改实战:识别手写公式与图表 每次批改理科作业,是不是都感觉眼睛快看花了?特别是面对几十份甚至上百份的手写作业,那些密密麻麻的公式、歪歪扭扭的电路图,还有各式各样的化学符号,…...

Tencent Hunyuan3D-1.0模型蒸馏实践:从std版本压缩出移动端可用的轻量模型

Tencent Hunyuan3D-1.0模型蒸馏实践:从std版本压缩出移动端可用的轻量模型 【免费下载链接】Hunyuan3D-1 腾讯开源的Hunyuan3D-1项目,创新提出两阶段3D生成方法,实现快速、高质量的文本到3D和图像到3D转换,融合Hunyuan-DiT模型&am…...

CYBER-VISION零号协议Markdown文档大师:替代Typora的智能写作体验

CYBER-VISION零号协议Markdown文档大师:替代Typora的智能写作体验 如果你和我一样,每天都要和Markdown文档打交道,那你肯定知道那种感觉:面对一个空白文档,脑子里有想法,但就是敲不出满意的句子&#xff1…...

Phi-3-vision-128k-instruct Vue3前端集成实战:构建智能图像分析Web应用

Phi-3-vision-128k-instruct Vue3前端集成实战:构建智能图像分析Web应用 1. 引言:当Vue3遇见多模态AI 想象一下,你正在开发一个电商网站,需要让系统自动识别用户上传的商品图片并生成详细描述。传统方案要么依赖人工标注&#x…...

Swashbuckle.AspNetCore 生产环境部署指南:安全配置API文档的终极方案

Swashbuckle.AspNetCore 生产环境部署指南:安全配置API文档的终极方案 【免费下载链接】Swashbuckle.AspNetCore Swagger tools for documenting APIs built on ASP.NET Core 项目地址: https://gitcode.com/gh_mirrors/sw/Swashbuckle.AspNetCore Swashbuck…...

MySQL高频面试题(2026最新版):覆盖90%考点,小白也能直接背

很多开发者备考时,要么盲目刷题、记不住重点,要么只背答案、不懂原理,面试时被面试官追问一句就卡壳。其实MySQL面试没有那么复杂,核心考点就那么多,只要吃透高频题、理解底层逻辑,就能从容应对。本文整理了…...

Movie_Recommend推荐算法对比:ALS、ItemCF与热门推荐全面解析

Movie_Recommend推荐算法对比:ALS、ItemCF与热门推荐全面解析 【免费下载链接】Movie_Recommend 基于Spark的电影推荐系统,包含爬虫项目、web网站、后台管理系统以及spark推荐系统 项目地址: https://gitcode.com/gh_mirrors/mo/Movie_Recommend …...

丹青幻境效果展示:宣纸底纹UI下生成图像与界面美学统一性视觉报告

丹青幻境效果展示:宣纸底纹UI下生成图像与界面美学统一性视觉报告 1. 设计理念与视觉定位 丹青幻境的设计理念源于传统东方美学与现代数字艺术的完美融合。这款基于Z-Image架构打造的数字艺术创作工具,彻底摒弃了传统AI工具冰冷的技术感,将…...

2.2.2.2 使用Spark单机版环境

本次实战深入探索Spark单机版环境的核心功能。首先运行SparkPi示例程序计算圆周率,验证集群计算能力;随后启动spark-shell进入交互式环境,完成等差数列求和、九九乘法表打印等基础任务。重点通过Scala代码操作RDD,演示了从文本文件…...

2.2.2.1 搭建Spark单机版环境

本次实战旨在Linux环境下完成Spark单机版环境的搭建。首先确保JDK已正确安装,随后获取Spark安装包并上传至服务器指定目录。接着,将安装包解压至系统路径,并通过修改配置文件设置环境变量,使系统能够识别Spark命令。最后&#xff…...

AI绘画杀死UI设计师?幸存者在开发岗位的复仇

在数字技术的狂潮中,AI绘画工具的崛起如海啸般席卷设计行业。短短几年间,Midjourney、Stable Diffusion等AI平台已能10秒生成上百张海报,基础美工岗招聘量骤降35%,薪资停滞在4-6K区间。无数UI设计师面临失业危机,仿佛一…...

停止学习新语言!2026年技术人的反内耗宣言

一、技术内耗的困局:语言焦虑与效率陷阱2026年的技术圈,Python稳居TIOBE榜首,Rust强势崛起,TypeScript重构前端生态……语言迭代的速度远超人类学习极限。测试从业者深陷三重内耗漩涡:工具链绑架:70%自动化…...

程序员鼓励师的消亡:当ChatGPT学会调情时

凌晨三点的代码战场凌晨三点的办公室,最后一行代码刚刚通过测试。疲惫的测试工程师瘫在椅上,屏幕右下角突然弹出消息:“亲爱的debug战士,今天的你又一次战胜了bug宇宙呢~(眨眼emoji)”。这不是人类同事的关…...

终极指南:如何在TensorFlow Rust中掌握while_loop循环结构

终极指南:如何在TensorFlow Rust中掌握while_loop循环结构 【免费下载链接】rust Rust language bindings for TensorFlow 项目地址: https://gitcode.com/gh_mirrors/rust/rust TensorFlow Rust是Rust语言与TensorFlow深度学习框架的绑定库,它允…...

收藏 | 传统程序员转型AI Agent工程师:未来最值钱的程序员是这类人

文章探讨了传统程序员在AI时代面临的转型问题,提出AI Agent工程师是未来趋势。文章指出,AI Agent工程师的核心能力并非模型本身,而是构建稳定自动化系统的系统工程能力,包括工具编排、状态管理、权限控制等。文章建议传统程序员通…...

收藏!小白也能入局:2026年最火高薪AI Agent开发指南(年薪80万+)

文章介绍了Agentic AI(AI Agent)的兴起及其对职场的巨大影响。通过一个真实案例展现了个人通过学习AI从月薪8K到年薪80万的转变。文章指出,到2026年,40%的岗位将与AI Agent协作,年薪10万美元起步的职位需求激增。文章详…...

终极指南:如何将danger-js与Webpack集成实现自动化代码审查

终极指南:如何将danger-js与Webpack集成实现自动化代码审查 【免费下载链接】danger-js ⚠️ Stop saying "you forgot to …" in code review 项目地址: https://gitcode.com/gh_mirrors/da/danger-js Danger JS是一个强大的自动化代码审查工具&a…...

让大模型乖乖听话:新手程序员必备的Prompt写作秘籍(收藏版)

本文探讨了如何通过精心设计的Prompt让大模型按照要求思考,提升任务执行的准确性。作者提出了一个有效的Prompt结构,包括角色/任务定义、核心原则、上下文处理、CoT(Chain of Thoughts)思考链、输出规范和Few-Shot示例等模块。文章还介绍了如何借助模型生…...

忍者像素绘卷代码实例:Python调用Z-Image-Turbo-rinaiqiao模型避坑指南

忍者像素绘卷代码实例:Python调用Z-Image-Turbo-rinaiqiao模型避坑指南 1. 环境准备与快速部署 在开始使用忍者像素绘卷之前,我们需要先搭建好Python环境并安装必要的依赖库。这个模型基于Z-Image-Turbo深度优化,特别适合生成16-Bit复古风格…...

React Overdrive与Next.js集成:构建流畅页面过渡

React Overdrive与Next.js集成:构建流畅页面过渡 【免费下载链接】react-overdrive Super easy magic-move transitions for React apps 项目地址: https://gitcode.com/gh_mirrors/re/react-overdrive React Overdrive是一款为React应用提供超简单魔法移动过…...

Qwen3.5-9B-AWQ-4bit惊艳效果展示:高清图识+中文摘要真实生成作品集

Qwen3.5-9B-AWQ-4bit惊艳效果展示:高清图识中文摘要真实生成作品集 1. 模型能力概览 Qwen3.5-9B-AWQ-4bit是一款让人眼前一亮的视觉理解模型,它能像人类一样"看懂"图片内容,并用流畅的中文给出专业分析。这个模型特别擅长处理各种…...

UI-Grid终极样式定制指南:10个LESS变量和主题系统使用技巧

UI-Grid终极样式定制指南:10个LESS变量和主题系统使用技巧 【免费下载链接】ui-grid UI Grid: an Angular Data Grid 项目地址: https://gitcode.com/gh_mirrors/ui/ui-grid UI-Grid作为Angular数据表格的强大解决方案,提供了灵活的样式定制系统。…...

Hashids终极指南:BCMath与GMP数学扩展性能深度对比

Hashids终极指南:BCMath与GMP数学扩展性能深度对比 【免费下载链接】hashids A small PHP library to generate YouTube-like ids from numbers. Use it when you dont want to expose your database ids to the user. 项目地址: https://gitcode.com/gh_mirrors/…...