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}
这将为您提供: