如何创建球形阴影并手动自定义 3D 照明?

如何创建球形阴影并手动自定义 3D 照明?

TikZshading=ball可以创建完美的 3D 球体透视图,但它没有选项可以改变照明角度、对比度、光的半径等(或者我不知道)。我尝试通过radial阴影创建一个 3D 球体。但是,我仍然不知道如何改变 的位置inner color

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}

\begin{tikzpicture}
\node[circle,shading=ball,minimum width=3cm] (ball) at (0,0) {};
\node[circle,outer color=blue!60!black,inner color=white,minimum width=3cm] (radial) at (4,0) {};
\end{tikzpicture}

\end{document}

在此处输入图片描述

定制 3D 照明的标准方法是什么?

答案1

您应该转到 pgfmanual(2010 年 10 月 25 日版本)的第 83.2.2 节“径向阴影”。

这是一个解决方案,其中该示例的颜色略有改变并且center points使用不同:

\documentclass{article}
\usepackage{pgf}
\begin{document}

% spheres definitions

\pgfdeclareradialshading{sphere}{\pgfpoint{0cm}{0cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}

\pgfdeclareradialshading{sphere1}{\pgfpoint{0.5cm}{0cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}


\pgfdeclareradialshading{sphere2}{\pgfpoint{0.5cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}


\pgfdeclareradialshading{sphere3}{\pgfpoint{0cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}

\pgfdeclareradialshading{sphere4}{\pgfpoint{-0.2cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}



\pgfuseshading{sphere}\pgfuseshading{sphere1}\pgfuseshading{sphere2}\pgfuseshading{sphere3}\pgfuseshading{sphere4}

\end{document}

这导致:

在此处输入图片描述


为了进一步自定义照明,您应该尝试:

  • 着色;
  • 着色位置。

更清楚地rgb(0.7cm)=(0.7,0.1,0);说,你想要(0.7,0.1,0)0.7 厘米处的颜色。

这是一个略有不同的例子:

\documentclass{article}
\usepackage{pgf}
\begin{document}

% spheres definitions

\pgfdeclareradialshading{sphere}{\pgfpoint{0cm}{0cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.7cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}

\pgfdeclareradialshading{sphere1}{\pgfpoint{0.5cm}{0cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.4cm)=(0.7,0.1,0); rgb(0.6cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}


\pgfdeclareradialshading{sphere2}{\pgfpoint{0.5cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.9cm)=(0.7,0.1,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}


\pgfdeclareradialshading{sphere3}{\pgfpoint{0cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.5cm)=(0.7,0.1,0); rgb(0.75cm)=(0.6,0.075,0); rgb(1cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}

\pgfdeclareradialshading{sphere4}{\pgfpoint{-0.2cm}{0.5cm}}% 
{rgb(0cm)=(1,1,1);
rgb(0.2cm)=(0.7,0.1,0); rgb(0.9cm)=(0.5,0.05,0); rgb(1.05cm)=(1,1,1)}


\pgfuseshading{sphere}\pgfuseshading{sphere1}\pgfuseshading{sphere2}\pgfuseshading{sphere3}\pgfuseshading{sphere4}

\end{document}

这将为您提供:

在此处输入图片描述

相关内容