旅行社網(wǎng)站的建設(shè)開(kāi)題報(bào)告青島網(wǎng)站建設(shè)方案
鶴壁市浩天電氣有限公司
2026/01/22 08:22:45
旅行社網(wǎng)站的建設(shè)開(kāi)題報(bào)告,青島網(wǎng)站建設(shè)方案,高端網(wǎng)站建設(shè) 房產(chǎn),哈工大 網(wǎng)站開(kāi)發(fā)做Manim動(dòng)畫(huà)久了#xff0c;你是否厭倦了那萬(wàn)年不變的黑色虛空#xff1f;很多初學(xué)者#xff08;甚至老手#xff09;都想給動(dòng)畫(huà)加個(gè)背景圖#xff0c;但往往會(huì)遇到兩個(gè)問(wèn)題#xff1a;怎么加#xff1f; 是把圖片放進(jìn)去#xff0c;還是設(shè)置相機(jī)#xff1f;看不清你是否厭倦了那萬(wàn)年不變的黑色虛空很多初學(xué)者甚至老手都想給動(dòng)畫(huà)加個(gè)背景圖但往往會(huì)遇到兩個(gè)問(wèn)題怎么加 是把圖片放進(jìn)去還是設(shè)置相機(jī)看不清 背景花里胡哨前面的文字公式瞬間“隱身”了。今天我們就來(lái)揭開(kāi)Manim動(dòng)畫(huà)中一個(gè)簡(jiǎn)單卻強(qiáng)大的技巧--為動(dòng)畫(huà)添加背景。通過(guò)幾個(gè)小示例分別演示兩種完全不同的背景處理思路。1. 舞臺(tái)布景法使用ImageMobject類(lèi)這是最直觀、最常用的方法。它的邏輯是背景圖片只是舞臺(tái)上的一個(gè)普通演員只是它長(zhǎng)得特別大而且站得特別靠后。這種方式的特點(diǎn)是高度靈活背景就是個(gè)對(duì)象Mobject所以它可以動(dòng)你可以讓背景旋轉(zhuǎn)、平移、縮放甚至改變顏色。層級(jí)管理需要手動(dòng)把它的 z_index 設(shè)低或者最先添加它。下面的第一個(gè)示例中實(shí)現(xiàn)一個(gè)簡(jiǎn)單的動(dòng)態(tài)背景操作背景和操作一般的Mobject是一樣的。class Method1ImageMobject(Scene):def construct(self):# 1. 加載圖片確保這個(gè)圖片是存在的bg ImageMobject(./assets/紫色夢(mèng)幻星空.jpg)# 2. 核心操作撐滿屏幕并允許超出# 我們把高度設(shè)為屏幕高度的 2 倍這樣才有移動(dòng)的空間bg.scale_to_fit_height(config.frame_height * 2)# 3. 核心操作放到最底層bg.set_z_index(-100)self.add(bg)# 前景物體text Text(方法一ImageMobject, font_size40, colorWHITE)sub Text(背景可以動(dòng), font_size24, colorYELLOW).next_to(text, DOWN)self.play(Write(text), FadeIn(sub))# 4. 演示優(yōu)勢(shì)讓背景緩慢移動(dòng)self.play(bg.animate.shift(LEFT * 2), rate_funclinear)self.play(bg.animate.shift(UP * 2), rate_funclinear)self.play(bg.animate.shift(RIGHT * 2), rate_funclinear)self.play(bg.animate.shift(DOWN * 2), rate_funclinear)self.wait()下面的示例也很簡(jiǎn)單就是顯示一段簡(jiǎn)單的公式。不過(guò)大家可以比較看看相比于默認(rèn)的黑色背景加一個(gè)學(xué)校的黑板背景是不是更有親和力class Method2ImageMobject(Scene):def construct(self):# 1. 加載圖片bg ImageMobject(./assets/黑板.jpg)# 2. 調(diào)整大小鋪滿屏幕bg.scale_to_fit_height(config.frame_height)bg.scale_to_fit_width(config.frame_width)# 3. 核心操作放到最底層bg.set_z_index(-100)self.add(bg)# 前景物體math MathTex(rint_0^infty e^{-x^2} dx frac{sqrt{pi}}{2})self.play(Write(math))2. 主角光環(huán)法除了上面兩種還有一種比較特殊的方式也就是BackgroundColoredVMobjectDisplayer類(lèi)。它是一個(gè)負(fù)責(zé)渲染的類(lèi)專(zhuān)門(mén)處理一種特殊情況當(dāng)物體擁有“背景色描邊”時(shí)如何遮擋住它背后的東西。我們通過(guò) set_background_stroke() 來(lái)調(diào)用這個(gè)機(jī)制。嚴(yán)格來(lái)說(shuō)不是 “設(shè)置全屏背景”而是 “給物體加一個(gè)局部背景Matte”這是在花哨背景下生存的必備技能。它的特點(diǎn)是局部遮擋在文字或公式周?chē)梢蝗Σ煌该鞯妮喞?。增?qiáng)對(duì)比專(zhuān)門(mén)用于解決“背景太花文字看不清”的問(wèn)題。下面的示例故意構(gòu)造了一個(gè)混亂的背景然后比較看看這兩個(gè)一樣的公式是不是加了局部背景的公式更加清晰。class ReadableFormulaOnImage(Scene):def construct(self):# 1. 先設(shè)置一個(gè)很花的背景這里為了演示我們用隨機(jī)噪點(diǎn)模擬一張復(fù)雜的圖# 實(shí)際使用中請(qǐng)換成你的 image.jpgnoise Rectangle(width16, height10)noise.set_fill(color[BLUE, RED, GREEN, YELLOW], opacity0.5)# 把它搞得亂一點(diǎn)for _ in range(20):line Line(start[np.random.uniform(-7, 7), np.random.uniform(-4, 4), 0],end[np.random.uniform(-7, 7), np.random.uniform(-4, 4), 0],colorrandom_color(),stroke_width5,)self.add(line)self.add(noise)# 2. 普通的文字在花背景下很難看清bad_text MathTex(rfrac{-b pm sqrt{b^2 - 4ac}}{2a})bad_text.shift(UP)# 3. 【核心技巧】使用 BackgroundColoredVMobject 機(jī)制# set_background_stroke 會(huì)給文字加一層“描邊”# 這層描邊是不透明的會(huì)利用 Displayer 類(lèi)遮擋住背景good_text MathTex(rfrac{-b pm sqrt{b^2 - 4ac}}{2a})good_text.set_background_stroke(colorBLACK, width8) # 黑色描邊寬度設(shè)大一點(diǎn)good_text.shift(DOWN)# 動(dòng)畫(huà)演示對(duì)比self.play(Write(bad_text))self.play(Write(good_text)) # 清晰可見(jiàn)self.wait()3. 兩種方式比較兩種方式各有自己的應(yīng)用場(chǎng)景對(duì)比如下特性 舞臺(tái)布景法 主角光環(huán)法本質(zhì) 場(chǎng)景中的一個(gè)巨大物體 物體自身的描邊屬性主要用途 動(dòng)態(tài)背景、視差滾動(dòng)、多層背景 高亮主體、對(duì)抗花哨背景動(dòng)畫(huà)能力 ????? (極強(qiáng)) ??? (跟隨物體運(yùn)動(dòng))代碼復(fù)雜度 中 (需手動(dòng)調(diào)大小/層級(jí)) 低 (一行設(shè)置)文檔對(duì)應(yīng) Mobject類(lèi) BackgroundColoredVMobjectDisplayer最佳場(chǎng)景 漂浮的云、移動(dòng)的星空 字幕、復(fù)雜背景下的公式4. 總結(jié)簡(jiǎn)單來(lái)說(shuō)如果你想做一段電影感的片頭背景需要緩慢推移請(qǐng)用 舞臺(tái)布景法如果你發(fā)現(xiàn)文字看不清了請(qǐng)使用 主角光環(huán)法 (set_background_stroke) 給文字加個(gè) “光環(huán)”。