WPF聚光灯光源学习

news2024/11/18 22:37:19

聚光灯,Spotlight;其照亮方式与 PointLight 类似,但是它既有位置又有方向; 它们在 InnerConeAngle 和 OuterConeAngle 属性所设置的锥形区域(以度为单位指定)中投射光;

此光源在一个圆锥形区域内照亮物体,圆锥的角度由InnerConeAngle 和 OuterConeAngle指定;

来看一下,此段代码来自msdn的参考;运行如下;

 它是把3d的根元素Viewport3D放到了画布Canvas中,又放到布局面板DockPanel中,又设置了Viewport3D在画布中的左边距、顶边距属性,这样的话图形没显示在正中,靠左了一些;

加个背景看一下Canvas的区域如下;

 从代码看物体具有纹理坐标TextureCoordinates,物体的材质是一个线性渐变画刷LinearGradientBrush;

把光源改为一个纯白色的点光源看一下,物体本来的颜色如下;

 如果去掉纹理坐标,应该是只看到了渐变画刷的终止颜色;

 然后再来看聚光灯;

第一图,光源是在屏幕外6个距离,光源的作用范围Range是20;如果把Range改为5,则光源照不到物体;看一下如下是黑的;

 InnerConeAngle 和 OuterConeAngle调整锥体的大小;第一图锥体角度为20;如果把锥体角度调为40,锥体变大,看到如下;

锥体变大,光源白色,照射区域内光线更扩散,物体是不是应更暗;实际是更亮;还没完全理解,下回继续;

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <DockPanel>
    <Viewbox>
      <Canvas Width="321" Height="201">

        <!-- The Viewport3D provides a rendering surface for 3-D visual content. -->
        <Viewport3D ClipToBounds="True" Width="150" Height="150" Canvas.Left="0" Canvas.Top="10">

          <!-- Defines the camera used to view the 3D object. -->
          <Viewport3D.Camera>
            <PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" />
          </Viewport3D.Camera>

          <!-- The ModelVisual3D children contain the 3D models -->
          <Viewport3D.Children>
            <!-- A SpotLight is used to light the scene. The InnerConeAngle and OuterConeAngle are used
                 to control the size of the light cone created by the SpotLight. The Direction and Position
                 properties determine where the SpotLight is pointing in the scene. In this example, the Position
                 of the SpotLight is set so that the SpotLight is only illuminating the upper right-hand corner
                 of the 3D object. -->
            <ModelVisual3D>
              <ModelVisual3D.Content>
                  <SpotLight x:Name="mySpotLight" InnerConeAngle="40" OuterConeAngle="40" Color="#FFFFFF" Direction="0,0,-1" 
                  Position="1,1,6" Range="20"/>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>

                  <!-- The geometry specifies the shape of the 3D plane. In this sample, a flat sheet is created. -->
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D
                     TriangleIndices="0,1,2 3,4,5 "
                     Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 "
                     TextureCoordinates="0,0 1,0 1,1 1,1 0,1 0,0 "
                     Positions="-0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 " />
                  </GeometryModel3D.Geometry>

                  <!-- The material specifies the material applied to the 3D object. In this sample a linear gradient 
                       covers the surface of the 3D object.-->
                  <GeometryModel3D.Material>
                    <MaterialGroup>
                      <DiffuseMaterial>
                        <DiffuseMaterial.Brush>
                          <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                            <LinearGradientBrush.GradientStops>
                              <GradientStop Color="Yellow" Offset="0" />
                              <GradientStop Color="Red" Offset="0.25" />
                              <GradientStop Color="Blue" Offset="0.75" />
                              <GradientStop Color="LimeGreen" Offset="1" />
                            </LinearGradientBrush.GradientStops>
                          </LinearGradientBrush>
                        </DiffuseMaterial.Brush>
                      </DiffuseMaterial>
                    </MaterialGroup>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
          </Viewport3D.Children>

        </Viewport3D>
      </Canvas>
    </Viewbox>
</DockPanel>
</Page>

 

SpotLight 类
    沿指定方向将其效果投射到一个锥形区域的光对象;
    SpotLight 是一种 PointLight,因为它具有位置、范围和衰减;
    SpotLight 还允许您控制光线效果的圆锥的方向、形状和其他属性;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ChatGPT帮我们写一篇论文,最后查重的重复率会是多少?

使用ChatGPT帮我们写一篇论文&#xff0c;最后查重的重复率会是多少&#xff1f; ChatGpt一经发布就大火&#xff0c;迅速应用在各个领域&#xff0c;尤其在程序圈自动帮我们写代码着实是圈了一大波粉。那么它用在科研领域会出现怎样的效果呢&#xff0c;当我们写论文纠结几个…

实战整了一个后台服务,真香!

大家好&#xff0c;HTTP 服务是重中之重&#xff0c;今天分享一下 一个HTTP服务的实现。 项目介绍 本项目实现的是一个HTTP服务器&#xff0c;项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析&#xff0c;最终构建HTTP响应并返回给客户端。 HTTP在网络应…

25.自定义层

深度学习成功背后的一个因素是神经网络的灵活性&#xff1a; 我们可以用创造性的方式组合不同的层&#xff0c;从而设计出适用于各种任务的架构。 例如&#xff0c;研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一个现在在深…

逸佳君:提升电脑使用效率的一些工具和方法论

大家好&#xff0c;我是逸佳君。今天给大家介绍一下我日常使用的可以提升电脑使用效率的工具软件。 先放个写作框架&#xff1a; 一、浏览器篇浏览器首推谷歌。 1、网页收藏夹 曾经&#xff0c;我的浏览器堆满了有用无用的书签&#xff0c;当想要去找某一个书签的时候&#…

这次不找借口了,找不到工作就好好学一下这份 16W 字 Java 面试合集

人生很长&#xff0c;生活不止眼前的苟且&#xff0c;远方也是 倒霉的时候总会想起福祸相依&#xff0c;但你会发现倒霉起来没完没了&#xff0c;就是看不到传说中的“福” 年初被裁了&#xff0c;我会安慰自己&#xff0c;此处不留爷自有留爷处&#xff0c;然后踏入找工作的行…

android studio App Inspection 实时查看SQLite数据库

几年以前查看安卓手机的数据库&#xff0c;是把数据库文件导出到电脑上&#xff0c;然后用数据库查看工具查看的&#xff1a; Android查看手机内部储存目录及数据库文件_Alex老夫子的博客-CSDN博客_android database目录 现在Android Studio 有了新的工具 App Inspection&…

慧都APS解决方案,点亮「照明灯具行业」精益化生产之路

导语&#xff1a; 照明灯具行业正面临着巨大的考验&#xff0c;除了本身的技术门槛、制程复杂外&#xff0c;还面对产业内高度的竞争、原材料价格不断上涨等困境&#xff0c;在内外因素双重夹击下&#xff0c;灯具产业通过数字化变革降低运营成本&#xff0c;提升盈利空间已是…

【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)

文章目录部署环境准备环境修改修改hostname(各修改各的)修改hosts文件(master 和所有node )禁用swap(master 和所有node)修改内核参数(master 和所有node )安装 containerd安装k8s安装组件(master 和所有node )下载镜像(master 和所有node )集群配置(master)集群配置2集群配置3…

C/C++程序的断点调试 - Dev C++

本文以Dev C 5.11为例&#xff0c;简述C/C程序断点调试的基本方法和过程。其它的IDE环境&#xff0c;大同小异。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许…

探花交友_第7章_即时通信(新版)

探花交友_第7章_即时通信 文章目录探花交友_第7章_即时通信1.1 什么是即时通信1.2 功能说明1.3 技术方案2. 环信2.1 开发简介2.2 环信Console2.3 环信API介绍初始化基础API3. 抽取环信组件3.1 编写Properties对象3.2 编写HuanXinTemplate3.3 编写自动配置类3.4 环信集成测试4. …

Windows Defender 绕过(RTO I Lab环境实测)

背景 15号这天我通过了 RTO I 的考试。细想 RTO I 考试的 Lab&#xff0c;好像 Windows Defender&#xff08;以下简称 WD&#xff09;的保护做的比 OSEP 考试时还要好&#xff0c;更加严格。 回想起 9 月考 OSEP 的时候&#xff0c;只要你的 Payload 在文件创建&#xff08;…

这可能是Github 最全的Java面试笔记, 简直把所有 Java 知识面试题写出来了

前言 作为一个 Java 程序员&#xff0c;你平时总是陷在业务开发里&#xff0c;每天噼里啪啦忙敲着代码&#xff0c;上到系统开发&#xff0c;下到 Bug 修改&#xff0c;你感觉自己无所不能。然而偶尔的一次聚会&#xff0c;你听说和自己一起出道的同学早已经年薪 50 万&#x…

大数据 Hadoop集群配置

配置Hadoop集群 在master虚拟机上配置hadoop 编辑Hadoop环境配置文件 - hadoop-env.sh 命令&#xff1a;cd $HADOOP_HOME/etc/hadoop&#xff0c;进入hadoop配置目录 命令&#xff1a;vim hadoop-env.sh 命令source hadoop-env.sh&#xff0c;让配置生效 编辑Hadoop核心配…

项目的可交付成果

目录 概述 定义 形式 评审与验收 概述 概念来自PMBOK,这书真的要细嚼慢咽,“可交付成果”多次出现,全书总共出现了288次,贯穿全书,绝对是个核心概念。 定义 可交付成果是在某一过程、阶段或项目完成时,必须产出的任何独特并可核实的产品、成果或服务能力。它通常是…

2022吴恩达机器学习课程——第二课(神经网络)

注&#xff1a;参考B站视频教程 视频链接&#xff1a;【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 文章目录第一周一、神经元二、神经网络三、代码实现 & Tensorflow四、前向传播五、强人工智能六、矩阵乘法 (简单&#xff0c;可以跳过)第二周一、用Tensorflow训…

20221217英语学习

今日新词 haul v.&#xff08;人&#xff09;拖&#xff0c;拉 herd n.人群&#xff1b;&#xff08;尤指有蹄的哺乳动物&#xff09;兽群&#xff0c;牧群 focus v.把注意力集中于&#xff0c;重视&#xff1b;集中&#xff1b;&#xff08;使&#xff09;调节焦距 result…

代码随想录刷题记录day44 股票问题3 4

代码随想录刷题记录day44 股票问题3 4 123. 买卖股票的最佳时机 III 思想 dp数组定义 递推公式 dp[i][0] 第i天不操作股票手头最大的现金 i从0开始 dp[i][1] 第i天第一次持有股票的手头最大的现金 dp[i][1] max: i-1天不操作&#xff0c;第i天才买入&#xff1a;dp[i-1][0…

港科夜闻|香港科技大学(广州)拟获批首个省级重点实验室

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科技大学(广州)拟获批首个省级重点实验室。2022年12月6日&#xff0c;广东省科学技术厅发布关于2023年度平台基地及科技基础条件建设、高水平科技期刊建设拟立项目清单的公示&#xff0c;香港科大(广州)申报的广东省通感…

「Spring Cloud Alibaba官方手册」首发爆火,Github上标星243k

几年前 Dubbo被 SpringCloud所取代&#xff0c;相同的剧本&#xff0c;可惜阿里巴巴和 Spring社区都是巨头&#xff0c;巨头之间战斗要考虑很多&#xff0c;于是它们想到了合作&#xff0c; SpringCloud与alibaba相结合&#xff0c;技术上有人负责更新新的组件&#xff0c;也还…

今年面试太难,我凭借这份Java架构面试指南,成功跳槽涨薪10K

见字如面&#xff0c;这里是阿鑫~ 时光飞逝&#xff0c;转眼2022已经快结束了&#xff0c;最近内卷严重&#xff0c;大环境并不是很好&#xff0c;相信很多小伙伴也在准备明年金三银四的面试计划 ​跳槽加薪 职场中加薪有个屡试不爽的方法&#xff0c;那就是跳槽 每每听到周围…