Unity Shader实战:MatCap技术实现炫酷镭射材质效果
1. 项目概述从“贴图球”到次世代质感如果你在Unity或者Blender社区里混过一阵子大概率见过一种叫“MatCap”的技术。这玩意儿听起来挺玄乎但说白了就是一种极其高效、效果又出奇好的“作弊”渲染手法。它不跟你玩复杂的光照计算什么BRDF、PBR流程都先放一边核心思路就一句话用一张球体环境贴图直接“映射”到模型表面来模拟复杂的光照和材质效果。想象一下你手里有一个完全光滑的、能完美反射周围环境的铬球。无论你从哪个角度看这个球它表面反射出的图案其实都只跟你观察它的角度或者说球面上那一点的法线方向有关。MatCap就是把这个原理反过来用我预先画好一张在这个“标准球”上应该呈现出的最终效果图比如金属、丝绸、镭射虹彩然后渲染时根据模型表面每一点的法线方向去这张图上“采样”对应的颜色直接贴上去。这次我们要搞定的就是利用MatCap来实现一种视觉冲击力极强的炫酷镭射材质。这种材质的特点是高反射、高饱和度、色彩随视角剧烈变化常见于赛博朋克风格的UI、未来载具涂装或者虚拟偶像的服饰上。传统PBR流程调出这种效果非常费劲需要复杂的多层材质和后期处理而用MatCap一个Shader一张贴图几行核心代码就能在移动端跑出60帧的流畅效果。这不仅是技术上的取巧更是美术表现上的利器。2. 核心原理拆解MatCap如何“欺骗”你的眼睛在深入代码之前我们必须把MatCap的“魔法”拆解清楚这样才能知其然更知其所以然后续调参和魔改才不会抓瞎。2.1 MatCap贴图的本质MatCap贴图Material Capture通常是一张正方形的2D纹理中心是一个球体的渲染结果。这个球体是在固定光照和观察环境下渲染出来的。例如你可能在一个左侧有冷光、右侧有暖光的环境下渲染一个具有复杂菲涅尔效应和虹彩的金属球然后把渲染结果保存为一张MatCap贴图。关键在于这张图编码了在标准球体上每一个法线方向所对应的最终颜色。在标准球坐标系下球体正对摄像机法线方向为(0,0,1)的点对应贴图的中心。球体边缘法线逐渐与视线垂直的点对应贴图从中心到边缘的区域。2.2 映射的关键从模型法线到UV坐标Shader的核心任务就是把模型表面任意一点的法线向量转换到观察空间View Space然后将其X和Y分量忽略Z归一化并偏移直接作为UV坐标去采样MatCap贴图。为什么是观察空间因为MatCap模拟的是固定视角下的反射。我们假设环境和观察者是相对静止的或者说是随着摄像机旋转的这样模型表面的表现才只与其自身的朝向法线有关。如果使用世界空间法线当你旋转摄像机时模型上的“高光”位置不会变化这会显得非常假。而使用观察空间法线旋转摄像机时法线在观察空间中的XY投影会变化从而采样到MatCap贴图上不同的区域模拟出高光随视角移动的效果这正是我们想要的。转换公式核心中的核心将顶点法线normalOS转换到观察空间normalVS。将normalVS的xy分量进行归一化处理uv normalVS.xy * 0.5 0.5。这个uv坐标范围0到1就是用来采样MatCap贴图的坐标。简单来说模型上一点的法线越“正对”摄像机normalVS.z接近1xy接近0采样的位置就越靠近MatCap贴图的中心。法线越“侧对”摄像机normalVS.z接近0xy的绝对值大采样的位置就越靠近贴图的边缘。2.3 镭射效果的特殊性普通金属或陶瓷MatCap贴图本身是相对静态的。但镭射材质要求色彩是动态变化、流动的。这就需要我们在基础的MatCap映射之上增加一层“扰动”。常见的做法有两种时间偏移让MatCap贴图的采样UV随着时间缓慢移动模拟色彩在表面流动的感觉。法线扰动使用一张噪声图Noise或流动图Flow Map对模型法线进行扰动再去做MatCap映射这样能得到更复杂、更有机的虹彩扭曲效果而不是简单的平移。我们将采用第二种更高级的方法因为它能产生更丰富、更不重复的视觉效果。3. 完整Shader代码实现与逐行解析下面是一个基于Unity URPUniversal Render Pipeline的完整Shader代码实现了带法线扰动的动态镭射MatCap效果。我会把代码分成块并详细解释每一部分的作用和参数。// 这是一个URP的Unlit Shader因为MatCap不依赖URP的PBR光照计算。 Shader Custom/MatCap_Laser { Properties { // 主色调用于给MatCap效果整体上色或混合 _BaseColor(Base Color, Color) (1,1,1,1) // 核心的MatCap贴图必须是2D正方形贴图 _MatCapTex(MatCap Texture, 2D) white {} // 控制MatCap效果的强度 _MatCapIntensity(MatCap Intensity, Range(0, 2)) 1.0 // 用于扰动法线的噪声/流动图 _DistortionTex(Distortion Texture, 2D) bump {} // 扰动强度值越大色彩扭曲越剧烈 _DistortionStrength(Distortion Strength, Range(0, 0.5)) 0.1 // 扰动UV的移动速度创造动态效果 _DistortionSpeed(Distortion Speed, Vector) (0.1, 0.1, 0, 0) // 控制模型边缘的菲涅尔效应强度增强立体感 _FresnelPower(Fresnel Power, Range(0, 10)) 5.0 _FresnelIntensity(Fresnel Intensity, Range(0, 1)) 0.5 } SubShader { Tags { RenderTypeOpaque RenderPipelineUniversalPipeline QueueGeometry} Pass { Name ForwardLit Tags { LightModeUniversalForward } HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl #include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl struct Attributes { float4 positionOS : POSITION; float3 normalOS : NORMAL; float2 uv : TEXCOORD0; // 用于采样扰动贴图 }; struct Varyings { float4 positionHCS : SV_POSITION; float3 normalVS : TEXCOORD0; // 观察空间法线 float2 uv : TEXCOORD1; // 传递UV float3 viewDirVS : TEXCOORD2; // 观察空间视线方向 }; // 声明与Properties对应的变量 CBUFFER_START(UnityPerMaterial) float4 _BaseColor; float _MatCapIntensity; float _DistortionStrength; float4 _DistortionSpeed; float _FresnelPower; float _FresnelIntensity; CBUFFER_END TEXTURE2D(_MatCapTex); SAMPLER(sampler_MatCapTex); TEXTURE2D(_DistortionTex); SAMPLER(sampler_DistortionTex); Varyings vert(Attributes IN) { Varyings OUT; // 将顶点位置从对象空间转换到齐次裁剪空间 VertexPositionInputs positionInputs GetVertexPositionInputs(IN.positionOS.xyz); OUT.positionHCS positionInputs.positionCS; // 将法线从对象空间转换到观察空间关键步骤 VertexNormalInputs normalInputs GetVertexNormalInputs(IN.normalOS); OUT.normalVS normalInputs.normalWS; // 注意URP的GetVertexNormalInputs返回的是世界空间法线 // 我们需要的是观察空间法线所以需要进一步转换。 // 更准确的做法是OUT.normalVS mul((float3x3)UNITY_MATRIX_V, normalInputs.normalWS); // 计算观察空间下的视线方向从顶点指向摄像机 float3 positionWS positionInputs.positionWS; float3 viewDirWS GetWorldSpaceNormalizeViewDir(positionWS); OUT.viewDirVS mul((float3x3)UNITY_MATRIX_V, viewDirWS); // 转换到观察空间 // 传递纹理坐标 OUT.uv IN.uv; return OUT; } half4 frag(Varyings IN) : SV_Target { // --- 步骤1采样并计算扰动 --- // 让扰动贴图的UV随时间滚动产生动态效果 float2 distortionUV IN.uv _Time.y * _DistortionSpeed.xy; // 采样扰动图rg通道通常代表在切线空间内的偏移方向 half2 distortion SAMPLE_TEXTURE2D(_DistortionTex, sampler_DistortionTex, distortionUV).rg; // 将采样值从[0,1]映射到[-1,1]并乘以强度系数 distortion (distortion * 2 - 1) * _DistortionStrength; // --- 步骤2扰动观察空间法线 --- // 归一化观察空间法线 float3 normalVS normalize(IN.normalVS); // 将扰动加到法线的xy分量上。注意这是简化处理更精确的做法应在切线空间扰动后转换。 normalVS.xy distortion; normalVS normalize(normalVS); // 必须重新归一化 // --- 步骤3生成MatCap UV --- // 核心映射公式将扰动后的观察空间法线xy分量从[-1,1]映射到[0,1]的UV空间 float2 matcapUV normalVS.xy * 0.5 0.5; // --- 步骤4采样MatCap贴图 --- half4 matcapColor SAMPLE_TEXTURE2D(_MatCapTex, sampler_MatCapTex, matcapUV); matcapColor.rgb * _MatCapIntensity; // --- 步骤5计算菲涅尔边缘光 --- // 菲涅尔效应视线与法线夹角越大越边缘效应越强 float fresnel pow(1.0 - saturate(dot(normalVS, normalize(IN.viewDirVS))), _FresnelPower); float3 fresnelColor fresnel * _FresnelIntensity; // --- 步骤6混合最终颜色 --- // 将MatCap颜色、菲涅尔效果和基础色混合 half3 finalColor matcapColor.rgb fresnelColor; finalColor * _BaseColor.rgb; return half4(finalColor, 1.0); } ENDHLSL } } }关键代码段解析与注意事项法线空间转换的坑极易出错代码注释中提到了一个关键点。URP的GetVertexNormalInputs函数返回的是世界空间法线。而标准的MatCap需要观察空间法线。我写的OUT.normalVS normalInputs.normalWS;在大多数情况下“好像”也能工作这是因为在简单的旋转下世界空间法线的xy分量变化与观察空间有相似性但这不严谨。正确的做法是使用mul((float3x3)UNITY_MATRIX_V, normalInputs.normalWS)进行转换。这里为了代码清晰先用了不严谨的写法你在实际使用时务必修正。扰动算法的简化normalVS.xy distortion;是一种直观但物理不准确的扰动。更精确的方法是在切线空间内对法线贴图进行扰动然后再转换到观察空间。但对我们追求视觉效果的镭射材质来说这种简化方法效率更高效果也足够炫酷属于“艺术性正确”。MatCap贴图的选择这是效果成败的关键。你需要一张色彩过渡强烈、对比度高、带有虹彩或光谱渐变的正方形贴图。可以在PS里用渐变工具配合扭曲滤镜自制也可以去资源商店找现成的MatCap合集。一张好的镭射MatCap贴图应该中心到边缘有丰富的色彩变化。参数调节心得_DistortionStrength从0.01开始慢慢调。太小没效果太大超过0.3会导致UV采样越界出现难看的接缝或扭曲过度。_DistortionSpeed控制色彩流动的速度。给xy设置不同的值可以产生斜向流动的效果比单纯横向流动更自然。_FresnelPower和_FresnelIntensity用于增强模型边缘的亮度或颜色使其在转动时轮廓更醒目。Power控制衰减曲线值越大边缘光越锐利Intensity控制强度。4. 实战应用与高级技巧有了基础Shader我们可以把它玩出更多花样应用到不同场景。4.1 在Unity中的完整设置流程创建材质在Project窗口右键 - Create - Material命名为“Laser_MatCap”。指定Shader在Material Inspector顶部Shader下拉菜单中选择“Custom/MatCap_Laser”。配置贴图与参数将准备好的镭射MatCap贴图拖给_MatCapTex。找一张噪声图或云图拖给_DistortionTex。Unity自带的“DefaultResources/Textures/Noise”文件夹里有可用的。将_BaseColor设为白色1,1,1以确保MatCap颜色完全显示。初步设置_MatCapIntensity1,_DistortionStrength0.1,_DistortionSpeed(0.05, 0.05),_FresnelPower5,_FresnelIntensity0.3。应用到模型将材质拖到场景中的任意3D模型上。立刻就能看到基础的镭射效果。4.2 进阶效果多层MatCap混合单一MatCap有时显得单调。我们可以采样两张或多张MatCap贴图进行混合创造出更复杂的质感。实现思路 在片段着色器中我们使用两套UV可以是同一套UV经过不同速度和方向的偏移分别采样两张MatCap贴图例如一张是彩虹光谱一张是金属刮痕。float2 matcapUV1 normalVS.xy * 0.5 0.5 _Time.y * _Speed1; float2 matcapUV2 normalVS.xy * 0.5 0.5 _Time.y * _Speed2; half4 color1 SAMPLE_TEXTURE2D(_MatCapTex1, sampler_MatCapTex1, matcapUV1); half4 color2 SAMPLE_TEXTURE2D(_MatCapTex2, sampler_MatCapTex2, matcapUV2); // 使用lerp混合或者用一张遮罩图Mask的灰度值来控制混合权重 half4 finalMatcapColor lerp(color1, color2, _BlendFactor);这样模型表面会同时呈现两种流动的质感视觉细节倍增。4.3 性能优化与移动端适配MatCap本身是性能友好的但扰动和动态效果会增加开销。针对移动端优化降低纹理精度MatCap贴图和扰动贴图使用压缩格式如ASTC 4x4或ETC2尺寸建议控制在512x512或256x256。简化计算如果模型本身是低模可以考虑在顶点着色器vert函数中计算MatCap UV和扰动而不是在片段着色器frag函数中。这样计算量从“每像素”降低到“每顶点”虽然精度下降尤其在低模上会有块状感但性能提升显著。这被称为“顶点MatCap”是手游中常用的技巧。减少扰动采样如果性能吃紧可以去掉法线扰动只保留静态MatCap或简单的UV时间偏移效果依然不错。批处理Batching确保使用相同的材质和贴图以利于Unity进行动态批处理或静态批处理减少Draw Call。5. 常见问题排查与调试技巧即使照着代码抄也可能会遇到各种“翻车”现场。这里记录几个我踩过的坑和解决方法。5.1 问题模型一片纯黑或纯白排查步骤检查法线这是最常见的原因。在材质Inspector上勾选“Normals”或使用显示法线的调试工具查看模型法线是否朝向正确。如果法线反转MatCap采样会完全错误。检查MatCap贴图确保贴图已正确赋值并且不是纯黑/纯白贴图。临时将_MatCapIntensity调到5看是否有微弱变化。检查空间转换确认法线是否真的转换到了观察空间。一个简单的调试方法是在片段着色器中将normalVS.xy直接作为颜色输出return half4(normalVS.xy, 0, 1);。旋转摄像机你应该看到模型表面颜色平滑变化。如果颜色不变或突变说明空间转换错了。5.2 问题MatCap效果扭曲、拉伸严重或接缝明显原因与解决模型UV问题MatCap效果依赖于模型自带的顶点UV来采样扰动贴图。如果模型UV展开得很糟糕重叠、拉伸那么扰动也会跟着出错。尝试在建模软件中重新展UV或使用Unity的“Generate Lightmap UVs”功能虽然目的不同但有时能改善。扰动强度过大_DistortionStrength值太大导致matcapUV超出[0,1]范围采样到了贴图边缘之外Wrap Mode为Repeat时会形成镜像接缝。适当调小该值或确保MatCap贴图的Wrap Mode为Clamp。MatCap贴图本身有接缝自己制作的MatCap球贴图在边缘UV的u0和u1处必须无缝衔接。在PS中制作时可以使用“偏移”滤镜配合图章工具来消除接缝。5.3 问题效果不随摄像机旋转而变化“粘”在模型上根本原因没有使用观察空间法线。你很可能错误地使用了模型空间或世界空间法线。请严格检查顶点着色器中的法线转换代码确保乘以了观察矩阵UNITY_MATRIX_V。5.4 问题在移动设备上效果闪烁或卡顿优化方向精度问题在片段着色器中对normalVS进行normalize操作在移动端GPU上可能开销较大。如果模型是光滑的可以考虑在顶点着色器归一化后通过INTERP_DATA插值到片元虽然会损失一些精度但能提升性能。Alpha Test/Blend如果材质涉及透明如镭射玻璃避免使用clip()或复杂的Alpha Test优先使用Alpha Blend并注意渲染队列Queue和混合模式Blend的设置错误的设置会导致Overdraw暴增。实时阴影这个Unlit Shader默认不参与阴影投射/接收。如果你需要阴影会额外增加Draw Call和计算。对于移动端装饰性物体可以考虑烘焙光照贴图或直接不要阴影。5.5 调试工具箱用颜色可视化中间变量这是Shader调试最有效的手段。怀疑哪里出错就把那个变量如matcapUV,distortion,fresnel作为颜色输出到屏幕一眼就能看出数值范围是否正确、变化是否平滑。简化Shader当效果异常时新建一个最简单的Shader只做最基本的MatCap映射不加扰动不加菲涅尔。如果基础版正常再逐步添加功能能快速定位问题模块。最后MatCap技术是一个宝藏它的简单高效使其成为风格化渲染、原型设计、移动端高表现力效果的绝佳选择。掌握它你就能用极低的性能成本为你的项目注入强烈的视觉风格。这张“欺骗”眼睛的魔法贴图能玩出的花样远不止镭射皮革、丝绸、边缘发光、卡通水墨……几乎所有依赖于视角的高光材质都可以尝试用MatCap来快速实现。关键在于大胆尝试不同的贴图和扰动组合艺术效果往往诞生于意料之外的参数搭配之中。

相关新闻

大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑

大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑

大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为周杰伦、五月天演唱会门票秒光而烦恼吗&#xff…

2026/10/10 13:51:08 阅读更多 →
打破语言壁垒:PotPlayer字幕翻译插件完整配置指南

打破语言壁垒:PotPlayer字幕翻译插件完整配置指南

打破语言壁垒:PotPlayer字幕翻译插件完整配置指南 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为外语电影的字幕而烦…

2026/10/14 23:51:16 阅读更多 →
飞书CLI开源:AI Agent与办公自动化融合的技术路径与实践

飞书CLI开源:AI Agent与办公自动化融合的技术路径与实践

1. 从命令行到智能体:飞书CLI开源背后的范式转移 最近,飞书官方开源了其命令行工具(CLI),这件事在开发者圈子里激起的波澜,远比表面上看起来要大。很多人第一反应可能是:“哦,又一个…

2026/10/10 15:35:55 阅读更多 →

最新新闻

守株待兔式投资:构建路径图与触发哨兵的稳健交易体系

守株待兔式投资:构建路径图与触发哨兵的稳健交易体系

有一年年初,我给自己的投资研究体系编了个内部代号,就叫“投资-408”。编号本身没什么特殊含义,纯粹是项目管理习惯,但一整年跑下来,这个代号越来越像一句提醒:真正让账户曲线变得平滑的,往往不…

2026/10/14 23:50:17 阅读更多 →
JNPF低代码平台实战:从功能手册到生产环境配置的完整避坑指南

JNPF低代码平台实战:从功能手册到生产环境配置的完整避坑指南

简介:JNPF软件开发平台V3.4.2操作手册由福建引迈信息技术有限公司发布,面向使用该低代码平台的开发者与实施人员,帮助其系统掌握产品各项功能。手册围绕在线开发、门户设计、大屏设计、代码生成与系统管理五大模块展开,其中在线开…

2026/10/14 23:50:17 阅读更多 →
挑战一周速通Spring+SpringBoot+SpringCloud!

挑战一周速通Spring+SpringBoot+SpringCloud!

Spring框架自从诞生以来就一直备受开发者青睐,它涵盖了Spring、Springboot、SpringCloud等诸多解决方案,一般我们都会统称为Spring全家桶!出于Spring框架在Java开发者心中中的统治地位,所以不管是面试还是工作,Spring都…

2026/10/14 23:50:17 阅读更多 →
从10秒到0.9秒:前端首屏加载性能优化实战全记录

从10秒到0.9秒:前端首屏加载性能优化实战全记录

前端性能优化这件事,我做了不少年头。最近接手这个后台项目时,首屏加载要10秒。10秒的概念,放在2026年的网络环境下,基本就是劝退用户。用户不会等一个页面转10秒才看到内容,大部分人3秒内没反应就会直接关掉页面。这个…

2026/10/14 23:50:17 阅读更多 →
Unity旋转与朝向控制:从欧拉角到四元数的实战指南

Unity旋转与朝向控制:从欧拉角到四元数的实战指南

1. 从一次“翻车”说起:为什么旋转和朝向值得单独拎出来讲刚接触Unity那会儿,我做过一个特别简单的需求:让场景里的一架小飞机沿着一条预设的路径飞,机头始终朝着前进方向。当时我的想法很朴素——算一下下一个路径点和当前位置的…

2026/10/14 23:50:17 阅读更多 →
AI提效后的人往哪放?转向获客侧完整落地指南

AI提效后的人往哪放?转向获客侧完整落地指南

我去年一直在折腾一个特别实际的问题:AI 把团队的重复劳动吃掉之后,省下来的这批人到底应该往哪放?一开始我也跟大多数人想的一样,觉得放着就行,反正效率高了嘛。后来发现完全不是这么回事,人一旦没有明确的…

2026/10/14 23:49:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →