画像のextructionによる回転(y軸)
1、画像の切り抜き
画像の輪郭をパスで描く前段階で、画像の余分な部分を切り抜いておきます。PhotoshopやPaintShopProなどの切り抜きができるグラフィックスソフトで切り抜いてください。
下図では、ピンクの部分が不要。
これを一旦表画像として保存します。
2、裏画像の作成
これを 左右反転してから 裏の画像を作成します。shapeが回転で裏返しになった時の画像にしますので、pathを描く輪郭をできるだけはみ出さないように、裏画像を作成してください。
今回の場合は、部分的修正で済ませました(作成中画面)。
出来上がりは裏画像として保存します。gifでもjpegでもいいのですが、今回は透過gifにしました。
表画像 sakuranboo.gif 裏画像 sakuranboo2.gif
3、表画像を元に、VML作成ツールやVML2作成ツールで輪郭をshapeのpathになるように作成します。
下図はわかりやすくするために、filled="f" strokecolor="red" strokeweight="2pt"にしています。
原点を回転の中心に移動させておいてください。
パスが取得できたら、ひな形にしましょう。HTML+TIMEとVML使用できるひな形にしておいてください。
4、shapeエレメントのサブエレメントにfillサブエレメントとextructionサブエレメントを入れます。この時fshapeエレメント・fillサブエレメント・extructionサブエレメントすべてにIDを入れておきます。
また、fillサブエレメントには、画像をshape図形全体にぴったりと貼り付けるために、type="frame"を入れます。
<v:shape
id="boo"
style="LEFT: 300px; WIDTH:
1px; POSITION: absolute; TOP: 300px; HEIGHT: 1px; rotation: 0" coordsize="1,1"
stroked="f" path="m 3 -228 c 43 -224 69 -251 103 -215 139 -200 113 -189 83
-204 58 -205 59 -207 82 -190 100 -183 94 -155 115 -140 126 -110 98 -93 79 -78 70
-71 59 -63 44 -58 76 -40 89 -68 105 -81 181 -137 211 -110 93 -32 88 -20 80 -6 80
11 132 26 193 49 105 81 166 153 162 195 51 98 33 93 17 121 -14 103 -27 111 -37
113 -53 106 -90 152 -149 179 -99 98 -108 94 -115 87 -119 81 -141 96 -161 72 -167
52 -191 39 -142 33 -125 28 -90 12 -79 5 -90 -19 -211 -146 -183 -167 -104 -82
-101 -80 -100 -82 -96 -85 -140 -115 -131 -156 -105 -155 -108 -164 -100 -172 -90
-184 -145 -184 -136 -195 -103 -201 -126 -224 -120 -235 -83 -222 -77 -230 -62
-232 -46 -231 -71 -252 -41 -251 3 -228 x e">
<v:fill
id="bumof"
type="frame"
/>
<v:extrusion
id="muki"
on="t"
type="parallel"
skewangle="0" foredepth="10mm"
backdepth="10mm"
autorotationcenter="t"
color="#fcc"
viewpointorigin="0,0" viewpoint="0,0" rotationangle="0,-330" facet="0.01"
lightposition="-200,300,500" metal=t" />
</v:shape>
extructionのtype属性がparallelの場合は、他の属性値がデフォルトの時に、rotationangle="0,0"では、正面を向きません。parallelの場合に正面を向いた状態からスタートさせるには、rotationangle="0,-330"としてください。一回転させるには、-330から30までの回転をさせます。
extructionのtype属性がperspectiveの場合は、rotationangle="0,0"で正面を向きます。回転は-360〜0または、0〜360で一回転します。
但しperspectiveの場合は画像の貼り付けが回転によってずれます。---これについては後述のサンプルを見てください。
【逆回転】
extructionのtype属性がparallelの場合は、他の属性値がデフォルトの時に、rotationangle="0,0"では、正面を向きません。parallelの場合に正面を向いた状態からスタートさせるには、rotationangle="0,30"としてください。一回転させるには、30から-330までの逆回転をさせます。
extructionのtype属性がperspectiveの場合は、rotationangle="0,0"で正面を向きます。逆回転は360〜0または、0〜-360で一回転します。
注意!rotationangleのとり得る値は、-360〜360です。必ずこの範囲に収まるようにしてください。
5、画像はidをつけたIMGエレメントで参照しておきます。
<IMG
id="image1"
style="DISPLAY: none"
src="sakuranboo.gif">
<IMG
id="image2"
style="DISPLAY: none" src="sakuranboo2.gif">
6、回転のHTML+TIME
<t:animate attributeName="rotationangle.y" from="-330" targetElement="muki" to="30" autoReverse="false" begin="0" dur="6" fill="hold" repeatCount="indefinite" restart="whenNotActive" />
6秒で一回転の場合です。
6、画像の表と裏返りのHTML+TIME
TIMEで画像チェンジはできませんので、スクリプトを使用しますが、イベントハンドラの後に記述する部分は実はスクリプトを書くことになっています。
※今回はz-indexを使いません。
まず 0〜90°回転するまでですが、これは表の画像が見えていなければなりません。この 0〜90°は、回転のbeginから6÷4= 1.5秒間 です。この間は画像が表
次の 90〜270°回転では、裏が見えていなければなりません。この 90〜270°は、 回転のbeginから1.5秒 〜4.5秒の 3秒間 です。この間は画像が裏
最後の 270〜360°回転では、また表が見えることになります。この 270〜360°は、 回転のbeginから4.5秒 〜6秒の 1.5秒間 です。この間は画像が表
これら一連の動作を繰り返せば、回転の繰り返しと同様に、6秒で一回の動作の繰り返しとなります。
parタイムラインコンテナで括っちゃいます。parの開始は、回転の開始と同じです。repeatcountも同じにできます。
画像
<t:par begin="0" repeatcount="indefinite">
<t:event onbegin="
bumof.src=image1.src
"
begin="0"
dur="1.5"
/>
<t:event onbegin="
bumof.src=image2.src
"
begin="1.5"
dur="3"
/>
<t:event onbegin="
bumof.src=image1.src
"
begin="4.5"
dur="1.5"
/>
</t:par>
onbegin=" スクリプト式 " になっています。意味は、bumofのsrcにimage1(あるいはimage2)のsrcを入れよ、って代入式です。これによって各eventエレメントが開始される度に、このスクリプト式が実行されることになります。
type="perspective" 描画が乱れる時もあるようです。一回転4秒
type="parallel" 一回転1.8秒
coordsize="2,2" として、X/Y座標を共に半分に縮小。
<t:animate
attributeName="top" from="300px" targetElement="boo3"
to="50px" autoReverse="true"
begin="0" decelerate="1" dur="450ms"
repeatCount="indefinite">も入れて、ジャンプするようにした。autoReverse="true"と、decelerate="1"がポイント。
敦子(さくらんぶ〜)画像:ズサンヌ