Surface opacity issue
- Linguagem predominante
- Python
- Estrelas
- 93.9k
- Forks
- 7.7k
- Merge médio
- 2d 13h
- PRs com merge (30d)
- 4
Descrição
### Describe the bug
When I add two Surfaces to the scene, both with opacity less than 1, the first surface added is opaque, whilst the second is transparent. In the images below I have swapped the order in which they are added to the scene, i.e. self.add(cone1,cone2) --> self.add(cone2,cone1).
**Code**:
from manimlib import *
import numpy as np
class MyCone(Surface):
CONFIG = {
"resolution": (101, 51),
"radius": 1,
"u_range": (0, 1),
"v_range": (0, 2*PI),
}
def uv_func(self, u: float, v: float) -> np.ndarray:
return self.radius * np.array([
u * np.cos(v),
u * np.sin(v),
u
])
class MyCone2(Surface):
CONFIG = {
"resolution": (101, 51),
"radius": 1,
"u_range": (0, 1),
"v_range": (0, 2*PI),
}
def uv_func(self, u: float, v: float) -> np.ndarray:
return self.radius * np.array([
0.25+u * np.cos(v),
u * np.sin(v),
0.5-u
])
class SurfaceExample(Scene):
CONFIG = {
"camera_class": ThreeDCamera,
}
def construct(self):
cone1 = MyCone(radius=3)
cone2 = MyCone2(radius=3)
cone1.set_opacity(0.35)
cone1.set_color(RED)
cone2.set_opacity(0.35)
cone2.set_color(GREEN)
frame = self.camera.frame
frame.set_euler_angles(
theta=-30 * DEGREES,
phi=70 * DEGREES,
)
self.add(cone1,cone2)
**Wrong display or Error traceback**:


k -->
### Additional context
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Olhe para a classe Surface em manimlib/mobject/three_d.py, focando no tratamento de opacity e na ordem de renderização. O bug provavelmente envolve como a transparência é aplicada quando múltiplas superfícies são adicionadas. Rode o exemplo fornecido para reproduzir, depois examine o pipeline de renderização e o código do shader para ver por que a primeira superfície aparece opaca.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Domínio
- computer-graphics
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 45/100