Blowing up a seahorse

The original surface

ContourPlot3D[(x^2-y^3)^2==(x+y^2)z^3,{x,-3,3},{y,-3,3},{z,-3,3},AxesLabel->{"x","y","z"},Mesh->None,MaxRecursion->10]

ContourPlot3D[(x^2-y^3)^2==(x+y^2)z^3,{x,-3,3},{y,-3,3},{z,-3,3},AxesLabel->{"x","y","z"},Mesh->None,PerformanceGoal->"Quality",MaxRecursion->5,PlotPoints->25]

The first blow-up

c=ContourPlot3D[(x^2-y^3)(x+y^2)==v^3,{x,-2,2},{y,-2,2},{v,-2,2},AxesLabel->{"x","y","v"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]

Show[c,Graphics3D[{PointSize[Large],Point[{-1,1,0}]}]]

The second blow-up

c=ContourPlot3D[(s^2-y)(s+y)==u^3,{s,-2,2},{y,-2,2},{u,-2,2},AxesLabel->{"s","y","u"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]

The third blow-up

c=ContourPlot3D[(y b^2-1)(b+1)==y c^3,{y,-2,2},{b,-2,2},{c,-2,2},AxesLabel->{"y","b","c"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]

The final blow-up (desingularized)

Chart 1

c=ContourPlot3D[((y j-1)^2-j(y j-2))j==(y+1)y k^3,{y,-2,2},{j,-2,2},{k,-2,2},AxesLabel->{"y","j","k"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]

Chart 2

c=ContourPlot3D[b i(b-2)+1+b-2==(b i +1)b k^3,{b,-2,2},{i,-2,2},{k,-2,2},AxesLabel->{"b","i","k"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]

Chart 3

c=ContourPlot3D[(i(c j-1)^2+j(c j-2))j==(i c +1)c,{i,-2,2},{c,-2,2},{j,-2,2},AxesLabel->{"i","c","j"},PlotPoints->25,PerformanceGoal->"Quality",MaxRecursion->5,Mesh->None]