首页 / 资讯中心 / 文章详情

光影控制完全指南:fiziko中lightDirection与invertedLight如何一键实现黑底白线插图

光影控制完全指南:fiziko中lightDirection与invertedLight如何一键实现黑底白线插图 ★ FEATURED ARTICLE
【免费下载链接】fizikoMetaPost library initially written to automate some elements of black and white illustrations for a physics textbook项目地址https://gitcode.com/gh_mirrors/fi/fiziko点击查看免费下载fiziko 是一个免费开源的 MetaPost 黑白插图库最初为物理教科书插图自动化而编写提供变宽线条、明暗球体、管道、滑轮、弹簧、绳结等现成绘图函数。本文将带你玩转它的两个光影开关——lightDirection光源方向与invertedLight反色光照只需几行代码即可一键实现黑底白线插图效果。什么是 fiziko免费的 MetaPost 黑白绘图库fiziko 解决的是一个很具体的痛点黑白线稿插图。没有颜色、没有渐变只靠线条疏密和明暗关系表现立体感。它内置了一组积木sphere.c/sphere.s用同心圆线或点阵着色的球体tube.l/tube.t/tube.s沿任意路径绘制不同纹理的管道⚙️pulley、wheel、spring、weight.s等物理教学常用物体knotFromStrands绳结绘制官方文档 fiziko.tex 的开头就说明了它的用途automate some elements of black and white illustrations for a physics textbook 见 README.md而在明暗这件事上整个库只依赖两个全局变量这就是本文的主角。两个光影开关lightDirection 与 invertedLightlightDirection一行代码改变光源方向lightDirection是一个pair类型的全局变量单位是弧度描述光线从哪个方向照下来。在 fiziko.mp 中它通过defineLightDirection(ldx, ldy)宏设置内部会把平面方向角转换为一个 3D 光照向量再与物体表面法线做点积算出每个点的明暗核心逻辑在 fiziko.mp 的normalVectorToLightness宏。默认值在 fiziko.mp 中设定defineLightDirection(-1/8pi, 1/8pi); % 默认左上方 45° 附近的光两个分量各自控制一个方向的倾斜改起来非常直观defineLightDirection(-1/8pi, 1/8pi); % 左上光默认高光偏左上 defineLightDirection( 0, 1/4pi); % 光从更上方来高光更靠近顶部 defineLightDirection( 1/8pi, 1/8pi); % 右上光高光移到右上 小技巧整页插图的多个球体、管道共用同一个lightDirection光源方向统一后整幅图的立体感才会协调——这也是它设计成全局变量的原因。invertedLight一键切换黑底白线invertedLight是一个布尔变量声明在 fiziko.mp默认false。它的效果写在源码里就一行把每个点的亮度取反1 - 亮度。物理图像很好理解白底黑线时亮面留白、暗面上线反过来黑底白线时亮面该上线、暗面留黑。所以只需翻转一次明暗原来所有球体、管道、滑轮、绳结的明暗关系自动全部反转无需改任何绘制代码。这正是文档 fiziko.tex 中推荐的用法。最快配置方法三步画出黑底白线插图第 1 步在 MetaPost 文档开头引入库见 fiziko.tex 的 Usage 一节input fiziko.mp第 2 步可选按你的审美设定光源方向defineLightDirection(-1/8pi, 1/8pi);第 3 步打开invertedLight先铺黑底再用白色画物体draw sphere.c(1cm); % 左边普通白底黑线球 invertedLight : true; % 一键切换反色光照 fill ((unitsquare shifted (-1/2,-1/2)) scaled 3/2cm) shifted (3/2cm, 0) withcolor black; % 铺一块黑色背景 draw sphere.c(1cm) shifted (3/2cm, 0) withcolor white; % 右边黑底白线球 invertedLight : false; % 画完记得切回来这段示例直接取自官方文档 fiziko.tex。注意最后一行把开关复位——invertedLight是全局状态只影响之后绘制的物体因此需要反色的区域前后各包一行即可其余插图完全不受影响。光影微调实用技巧线条细到极限怎么办全局变量minStrokeWidth控制着最细线条的宽度低于这个值时线条不再变细而是自动变成虚线保持单位长度墨量基本不变详见 fiziko.tex。想整体调整疏密感用宏defineMinStrokeWidth(1/2pt)即可阴影、点阵等参数会跟着联动fiziko.mp。选哪种纹理sphere.c用同心圆环线着色轮廓更工整sphere.s用点阵stipples着色颗粒感更强。两者都吃lightDirection和invertedLight实现见 fiziko.mp 的sphere宏。阴影会跟着光走。库提供shadowsEnabled阴影开关fiziko.mp投影方向直接由lightDirectionVectorXYZ推导所以改了光源方向阴影方向也会自动跟着变保证画面物理上自洽。算法边界要知道。官方文档提醒低层着色算法相当朴素只在较简单的几何条件下效果最佳复杂形状建议先用小图验证fiziko.tex。项目文件导航文件内容fiziko.mp核心源码含defineLightDirection、invertedLight、sphere、tube等全部宏fiziko.tex官方文档带可编译的示例插图luamplib环境fiziko.mkivContext/Gin 排版系统下的配套说明README.md项目简介与效果示例LICENSE.mdCC-BY-SA 4.0 开源协议小结fiziko 把黑白插图的立体感压缩成了两个变量lightDirection决定光从哪里来invertedLight决定明暗是正着来还是反着来。前者用一行defineLightDirection调方向后者用一行invertedLight : true就能让整页插图从白底黑线变成黑底白线——对新手来说这就是最接近一键换风格的 MetaPost 绘图体验了。赞分享【免费下载链接】fizikoMetaPost library initially written to automate some elements of black and white illustrations for a physics textbook项目地址https://gitcode.com/gh_mirrors/fi/fiziko点击查看免费下载相关推荐agent-skills中的SQL注入防护确保数据库安全的完整指南agent skills中的SQL注入防护确保数据库安全的完整指南 在当今数字化时代数据库安全是应用程序开发的重中之重。agent skills作为一套面向AI 技能AI 评测AI 插件开发工具告别复杂光影调整IC-Light如何用AI一键重塑图像光影告别复杂光影调整IC Light如何用AI一键重塑图像光影 你是否还在为照片的光影效果不佳而烦恼尝试过十几种修图软件却始终调不出理想的氛围IC Lig人工智能计算机视觉媒体生成图像处理Topit常见问题解答解决窗口置顶失败与兼容性问题Topit常见问题解答解决窗口置顶失败与兼容性问题 Topit是一款专为Mac用户设计的窗口置顶工具能够帮助用户将任何应用窗口固定在屏幕最前方提升多任务处桌面应用上一篇OneReward_repackaged部署避坑清单从Hugging Face下载到ComfyUI加载的常见问题排查下一篇监控、日志与告警全指南基于 Easy-Vibe 仓库的线上系统运维实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站